Добавлять шестнадцатеричную строку к содержимому двоичного файла - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть эти 2 массива, представляющих шестнадцатеричные числа, и я хочу записать в файл в двоичном формате.

Я преобразую в шестнадцатеричную строку следующим образом:

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, а затем добавьте (со смещением «0») hex_string1 к файлу.

Я продолжаю в том же духе, но вывод неправильный.

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 голосов
/ 02 февраля 2019

Вы должны написать вторую строку со смещением на размер первой строки:

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
...