jq внедряет массив байтовых целых в необработанные байты - PullRequest
1 голос
/ 13 мая 2019

С jq У меня есть массив байтов, например [0, 255, 128, 0, 127], который я хочу преобразовать в двоичный файл.

Это почти работает так:

jq --raw-output '. | implode' in.json > out.bin

Но, к сожалению, он интерпретирует входные данные как кодовые точки Unicode и записывает результат в виде строки UTF-8. Существует ли двоичная версия implode?

1 Ответ

1 голос
/ 13 мая 2019

jq либо выдает JSON, либо (с флагом -r) UTF-8, но вы можете рассмотреть возможность использования iconv или его эквивалента, например,

$ jq -j --raw-output 'implode' <<< '[0, 255, 128, 40, 127]'  | iconv -c -f utf-8 -t ISO-8859-16

Выходные данные, очевидно, не могут быть показаны здесь, поэтому рассмотрим вместо этого:

$ jq -j --raw-output 'implode' <<< '[0, 255, 128, 40, 127]'  | iconv -c -f utf-8 -t ISO-8859-16 | xxd -ps
00ff80287f

$ jq -j --raw-output 'implode' <<< '[0, 255, 128, 40, 127]'  | xxd -ps
00c3bfc280287f

В любом случае, обратите внимание, что начальный .| не нужен.

...