这可能是一个简单的问题,但我试图回顾编码和字节(我没有看过一会儿)来实现二进制协议。编码的十六进制字符串中的字节数
看起来正常字符是1个字节。但是,当你用十六进制编码它们时,它将字节数减半。
ruby-1.9.2-p180 :001 > "abcd".bytesize
=> 4
ruby-1.9.2-p180 :002 > ["abcd"].pack("H*")
=> "\xAB\xCD"
ruby-1.9.2-p180 :003 > ["abcd"].pack("H*").bytesize
=> 2
我也期待十六进制编码来与0-9和A-F
有人能帮助澄清这到底是怎么回事呢?而且,如果你能指出我对一般在线编码的好的评论,我很乐意提一提。我还没有看到任何简单的概述,但这会很棒。
谢谢!
看来你确实解码而不是编码以十六进制为'十六进制abcd'(四个字节)是'171,205'(二字节)十进制。 –
你想做什么?用十六进制表示每个字符的代码点? – deceze
一个字符是一个字节。一个十六进制数字[0-9A-F]是一个低位或半个字节。例如,'FF'十六进制是一个字节的最大值。因此,你的发现是预料之中的:一个4字符的字符串是4个字节,而'ABCD'十六进制是两个字节,'AB'和'CD'。 –