xxd文本转二进制数的前面补零的疑惑

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

猜你喜欢

转载自blog.csdn.net/chengf223/article/details/82707640