2011-12-05 53 views
2

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

如果我做我得到一个错误

在“系统”:字符串包含空字节(引发ArgumentError)

我需要发送这是一个十六进制字符串的微处理器。样本可能是0x81 0x00 0x00 0x21

回答

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" 
+0

这和stdout的重定向似乎有诀窍。谢谢 –

3

空字节有pack指令:x

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

酷。我没有看到。但是我的十六进制字符串是从用户输入中获取的,因此我不知道何时使用空字节,何时不使用。用户可能在最后三个字节中写入0x81 0x00 0x00 0x00或任何其他组合。 –