Ruby 字符串字节大小为十六进制
我试图在ruby中将字节大小转换为十六进制字符串。 我尝试了不同的pack/unpack/chr/hex组合,但没有成功 这是我想出来的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
"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