获取字符串长度的第一个字节
Taking first byte of the length of a string
开始学习了Ruby卡住了,试了很多方法都解决不了问题
我在 PHP 中得到了这个代码:
chr(strlen("root") & 0xFF);
chr(strlen("root") >> 8 & 0xFF);
我需要将其更改为 ruby。
Ruby的chr
函数不允许我做>> 8 & 0xFF
或只是& 0xFF
,我不知道为什么。
我也不知道这些函数是什么,但我确定我需要它们才能让我的代码正常工作。
如果有人能帮助我,解释并给我正确的功能就太好了,谢谢。
我不知道我是否正确理解了你的问题,但是你可以像这样获取字符串的字节
string.bytes
你将得到一个包含每个字节的数组。而且,要获取任何字节的字符,您可以使用
byte.chr
例如:
bytes_array = "I want a byte".bytes
=> [73, 32, 119, 97, 110, 116, 32, 97, 32, 98, 121, 116, 101]
并且,将第一个字节取回 char,
bytes_array[0].char
=> "I"
例如,如果您想要前 4 个字节的字符,您可以这样做:
string = ""
bytes_array[0..3].each do |b|
string << b.chr
end
您将拥有字符串
=> "I wa"
希望对您有所帮助。
开始学习了Ruby卡住了,试了很多方法都解决不了问题
我在 PHP 中得到了这个代码:
chr(strlen("root") & 0xFF);
chr(strlen("root") >> 8 & 0xFF);
我需要将其更改为 ruby。
Ruby的chr
函数不允许我做>> 8 & 0xFF
或只是& 0xFF
,我不知道为什么。
我也不知道这些函数是什么,但我确定我需要它们才能让我的代码正常工作。
如果有人能帮助我,解释并给我正确的功能就太好了,谢谢。
我不知道我是否正确理解了你的问题,但是你可以像这样获取字符串的字节
string.bytes
你将得到一个包含每个字节的数组。而且,要获取任何字节的字符,您可以使用
byte.chr
例如:
bytes_array = "I want a byte".bytes
=> [73, 32, 119, 97, 110, 116, 32, 97, 32, 98, 121, 116, 101]
并且,将第一个字节取回 char,
bytes_array[0].char
=> "I"
例如,如果您想要前 4 个字节的字符,您可以这样做:
string = ""
bytes_array[0..3].each do |b|
string << b.chr
end
您将拥有字符串
=> "I wa"
希望对您有所帮助。