首页 > 解决方案 > jq 将字节整数数组内爆为原始字节

问题描述

我有jq一个字节数组,就像[0, 255, 128, 0, 127]我想转换为二进制文件一样。

几乎像这样工作:

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

但不幸的是,它将输入解释为 Unicode 代码点,并将结果写为 UTF-8 字符串。有二进制版本implode吗?

标签: arraysjsonjqascii-8bit

解决方案


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

在任何情况下,请注意首字母.|是不必要的。


推荐阅读