编码的十六进制字符串中的字节数

时间:2011-12-12 01:23:29

标签: ruby encoding binary hex

这可能是一个简单的问题,但我正在尝试检查编码和字节(我暂时没有看过)来实现二进制协议。

看起来普通字符是1个字节。但是当你用Hex编码它们时,它会减少一半的字节数。

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

有人可以帮助澄清这里发生了什么吗?而且,如果你能指出我对在线编码的一个很好的评论,我很乐意刷新。我还没有看到任何简单的概述,这将是伟大的。

谢谢!

1 个答案:

答案 0 :(得分:3)

#pack读取给定的字符串,并根据给定的格式将其转换为二进制。 pack('H*')表示您给出的字符串表示十六进制表示法,因此它将字节ABCD从十六进制转换为二进制(1010 1011 1100 1101),这是两个字节。

尝试["g"].pack("H*"),其中g不是有效的十六进制字符......