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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值