打包字符串以包含空字节

时间:2011-12-05 13:11:51

标签: ruby

我想打包一个包含"00000000"的字符串。

如果我"00000000".to_a.pack('H*')我收到错误

  中的

:string包含空字节(ArgumentError)

我需要将其作为十六进制字符串发送到微处理器。样本可以是0x81 0x00 0x00 0x21

2 个答案:

答案 0 :(得分:3)

对于空字节有一个pack指令:x

>> ["a", "b"].pack("HxH") #=> "\xA0\x00\xB0"

答案 1 :(得分:1)

试试这个:

input = "A000B0"
output = []
until input.empty?
  output << input[0, 2].to_i(16)
  input = input[2..-1]
end
puts output.pack('C*').inspect # => "\xA0\x00\xB0"