Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 字符串字节大小为十六进制_Ruby_String_Hex_Byte - Fatal编程技术网

Ruby 字符串字节大小为十六进制

Ruby 字符串字节大小为十六进制,ruby,string,hex,byte,Ruby,String,Hex,Byte,我试图在ruby中将字节大小转换为十六进制字符串。 我尝试了不同的pack/unpack/chr/hex组合,但没有成功 这是我想出来的 "1".bytesize.chr.to_s.split.pack('a4') => "\x01\x00\x00\x00" 正如您所知,这不适用于较大的字符串,例如 "11111111".bytesize.chr().to_s.split.pack('a4') => "\b\x00\x00\x00" 其中第一个字节应为\x0B,并且 "testt

我试图在ruby中将字节大小转换为十六进制字符串。 我尝试了不同的pack/unpack/chr/hex组合,但没有成功

这是我想出来的

"1".bytesize.chr.to_s.split.pack('a4') => "\x01\x00\x00\x00"
正如您所知,这不适用于较大的字符串,例如

"11111111".bytesize.chr().to_s.split.pack('a4') => "\b\x00\x00\x00"
其中第一个字节应为
\x0B
,并且

"testtttttttttttttttttttttttttttttttttttttttttt".bytesize.chr.to_s.split.pack('a4') 
# => ".\x00\x00\x00"
这是错误的


i、 e,正好相反,如果
.bytesize
4294967295
,它应该是
“\xFF\xFF\xFF\xFF”
“1”。bytesize
1
“11111111”。bytesize
8
。为什么您希望后者会导致
\x0B\x00\x00\x00
?这是问题的一部分,结果会连接到一条Intel x64 JMP指令,变成“\xE9\x0B\x00\x00\x00”,稍后执行。您能否详细解释转换过程<代码>“\b”
00001000
(二进制),而
“\x0B”
00001011
。这两个额外的位是从哪里来的?公平地说,有可能生成“\x0b”吗?这一个是中间的<代码>a=sprintf(“%02X”,ARGV[0].字节大小)b=((a.大小%2==0)?(a):(“0{a}”)。upcase