2011-12-05 52 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或任何其他組合。 –