我有一些字节数据,
0Y0*†HÎ*†HÎ=B¬`9E>ÞÕ?ÐŽ·‹ñ6ì‰&ÉÐL_cüsyxoú¢
†
(¯-›E–¿9ÐÖ1ªÐ›¯o
现在,我想创建一个Linux脚本,将该数据转换为十六进制字符串。我该怎么做?
如果你只想要十六进制字符串:
$ echo '0Y0*†HÎ*†HÎ=B¬`9E>ÞÕ?ÐŽ·‹ñ6ì‰&ÉÐL_cüsyxoú¢'|od -vt x1|awk '{$1="";print}'
30 59 30 2a e2 80 a0 48 c3 8e 2a e2 80 a0 48 c3
8e 3d 42 c2 ac 60 39 45 3e c3 9e c3 95 3f c3 90
c5 bd c2 b7 e2 80 b9 c3 b1 36 c3 ac c2 ad c3 82
e2 80 b0 26 c3 89 c3 90 4c 5f 63 c3 bc 73 79 78
6f c3 ba c2 a2 0a
您可以通过使用od -vt x1 -A n
来避免使用awk
部分。感谢@Stefan van den Akker。
od
9.0版本有标志-A n
,可以跳过偏移量,因此您不必通过awk
进行过滤。 - undefinedhd
(十六进制转储)命令:$ echo '0Y0*†HÎ*†HÎ=B¬`9E>ÞÕ?ÐŽ·‹ñ6ì‰&ÉÐL_cüsyxoú¢' | hd
00000000 30 59 30 2a e2 80 a0 48 c3 8e 2a e2 80 a0 48 c3 |0Y0*...H..*...H.|
00000010 8e 3d 42 c2 ac 60 39 45 3e c3 9e c3 95 3f c3 90 |.=B..`9E>....?..|
00000020 c5 bd c2 b7 e2 80 b9 c3 b1 36 c3 ac c2 ad c3 82 |.........6......|
00000030 e2 80 b0 26 c3 89 c3 90 4c 5f 63 c3 bc 73 79 78 |...&....L_c..syx|
00000040 6f c3 ba c2 a2 0a |o.....|
00000046
或者,如果您没有 hd
或 hexdump
:
$ echo '0Y0*†HÎ*†HÎ=B¬`9E>ÞÕ?ÐŽ·‹ñ6ì‰&ÉÐL_cüsyxoú¢' | hexdump
0000000 5930 2a30 80e2 48a0 8ec3 e22a a080 c348
0000010 3d8e c242 60ac 4539 c33e c39e 3f95 90c3
0000020 bdc5 b7c2 80e2 c3b9 36b1 acc3 adc2 82c3
0000030 80e2 26b0 89c3 90c3 5f4c c363 73bc 7879
0000040 c36f c2ba 0aa2
0000046
hd B_Party_DEFAULT_CERTIFICATE_Public.der
bash: hd: 命令未找到
不起作用 - undefinedhd
是非标准的,但可以随时使用hexdump -C
(包含在util-linux中)来达到相同的效果。 - undefinedod -An -v -tx1 | tr -d ' \n'
例子:
printf '0123456789abcdef0123456789abcdef\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f' | od -An -v -tx1 | tr -d ' \n'
输出:
3031323334353637383961626364656630313233343536373839616263646566000102030405060708090a0b0c0d0e0f