TEST_ID =0123456789abcdef0123456789abcdef
printf "0: %s" $TEST_ID | xxd -r -g0 > ca_id.bin
疑惑1:前面为什么要加“0:”,不加用-g0 就不能正常输出二进制文件,为什么-g0必须要加0:标记呢,
-g number of octets per group in normal output. Default 2.
好像跟这个解释对不上!
^-^ 经过调试发现,跟这个-g还没有关系,-g只是每组几个而已,应该是转换的数据放到文件的位置,前面补领而已比如:
printf "8:%s" $CA_ID | xxd -r > ca_id.bin
printf "%s" $TEST_ID | xxd -r -p > ca_id.bin
这种方法是能正常输出的16进制的bin文件,
疑惑参考如下:
# big endianness
$ printf "0: %.8x" "65534" | xxd -r -g0 >a.bin
$ xxd a.bin
0000000: 0000 fffe
# little endianness
$ printf "0: %.8x" 65534 | sed -e 's/0\: \(..\)\(..\)\(..\)\(..\)/0\: \4\3\2\1/' | xxd -r -g0 > a.bin
$ xxd a.bin
0000000: feff 0000