将十六进制字符串添加到二进制文件的内容之前

时间:2019-02-01 23:05:08

标签: ruby string file binary prepend

我有这两个代表十六进制数字的数组,我想以二进制格式写入文件。

我这样转换为十六进制字符串:

a=["A2","48","04","03","EE","72","B4","6B"]
b=["1A","28","18","06","07","00","11","86","05","01","01","01","A0"]

hex_string1 = a.map{|b| b.to_i(16)}.pack("C*")
hex_string2 = b.map{|b| b.to_i(16)}.pack("C*")

现在,我想先将hex_string2写入文件,然后再将hex_string1(偏移量为“ 0”)添加到文件中。

我正在这样进行,但是输出不正确。

File.binwrite("outfile.bin",hex_string2)
File.binwrite("outfile.bin",hex_string1,0)

当前输出为:

A2 48 04 03 EE 72 B4 6B 05 01 01 01 A0

“ output.bin”中的正确内容如下:

A2 48 04 03 EE 72 B4 6B 1A 28 18 06 07 00 11 86 05 01 01 01 A0

怎么做呢?

1 个答案:

答案 0 :(得分:2)

您应该写第二个字符串,其偏移量为第一个字符串的大小:

File.binwrite("outfile.bin",hex_string2,hex_string1.size)
File.binwrite("outfile.bin",hex_string1,0)

在这种情况下,您将完全得到想要的:

A2 48 04 03 EE 72 B4 6B 1A 28 18 06 07 00 11 86 05 01 01 01 A0