为什么 xxd 添加字符?
Why does xxd add chars?
我正在尝试从没有 hexdump
或 base64
工具的系统中撤消 od
命令。
我是这样做的(当然,实际上,编码是在"small"系统上进行的,解码是在我的工作站上完成的,但是为了测试它,我尝试了整个过程第一行):
echo TEST | od -tx1 | xxd -r
当然,echo TEST
在这里只是一个占位符,例如。 cat test.bmp
或其他。
> echo TEST
TEST
> echo TEST | od -tx1
0000000 54 45 53 54 0a
0000005
> echo TEST | od -tx1 | xxd -r
TEST
那个看起来是对的,但它是不同的,如果我们把它再给od
我们可以看到这里:
> echo TEST | od -tx1 | xxd -r | od -tx1
0000000 54 45 53 54 0a 00 00 00
0000010
为什么 xxd -r
添加那些 00
?
您得到这三个 nul 字节是因为 xxd -r
尝试解析与预期格式不同的输入但失败了。 od -tx1
添加一个带有偏移但没有数据字节的额外行。加上 xxd
中的偏移量在它们后面有一个冒号,并以不同的宽度打印,并且显示可打印字节以及十六进制转储,并且可能在不同的基础上......关于那的东西没有与 xxd
配合得很好,结果它添加了额外的字节。
示例:
$ echo TEST | xxd
00000000: 5445 5354 0a TEST.
$ echo TEST | xxd | xxd -r
TEST
$ echo TEST | xxd | xxd -r | xxd
00000000: 5445 5354 0a TEST.
$ echo TEST | xxd | xxd -r | od -tx1
0000000 54 45 53 54 0a
0000005
$ echo TEST | od -tx1 | head -1 | xxd -r | od -tx1
0000000 54 45 53 54 0a
0000005
看看在给 xxd -r
其预期的 xxd
样式输入时它们是如何不存在的?当您从 od
的输出中删除额外的行时,它们怎么不存在了?不要混合和匹配不兼容的数据格式。
如果我完全删除偏移量,它似乎可以工作:
> echo TEST | od -tx1 -An
54 45 53 54 0a
> echo TEST | od -tx1 -An | xxd -r -p
TEST
> echo TEST | od -tx1 -An | xxd -r -p | od -tx1 -An
54 45 53 54 0a
宾果!注意字节前面的额外“”。好像没有效果。
我正在尝试从没有 hexdump
或 base64
工具的系统中撤消 od
命令。
我是这样做的(当然,实际上,编码是在"small"系统上进行的,解码是在我的工作站上完成的,但是为了测试它,我尝试了整个过程第一行):
echo TEST | od -tx1 | xxd -r
当然,echo TEST
在这里只是一个占位符,例如。 cat test.bmp
或其他。
> echo TEST
TEST
> echo TEST | od -tx1
0000000 54 45 53 54 0a
0000005
> echo TEST | od -tx1 | xxd -r
TEST
那个看起来是对的,但它是不同的,如果我们把它再给od
我们可以看到这里:
> echo TEST | od -tx1 | xxd -r | od -tx1
0000000 54 45 53 54 0a 00 00 00
0000010
为什么 xxd -r
添加那些 00
?
您得到这三个 nul 字节是因为 xxd -r
尝试解析与预期格式不同的输入但失败了。 od -tx1
添加一个带有偏移但没有数据字节的额外行。加上 xxd
中的偏移量在它们后面有一个冒号,并以不同的宽度打印,并且显示可打印字节以及十六进制转储,并且可能在不同的基础上......关于那的东西没有与 xxd
配合得很好,结果它添加了额外的字节。
示例:
$ echo TEST | xxd
00000000: 5445 5354 0a TEST.
$ echo TEST | xxd | xxd -r
TEST
$ echo TEST | xxd | xxd -r | xxd
00000000: 5445 5354 0a TEST.
$ echo TEST | xxd | xxd -r | od -tx1
0000000 54 45 53 54 0a
0000005
$ echo TEST | od -tx1 | head -1 | xxd -r | od -tx1
0000000 54 45 53 54 0a
0000005
看看在给 xxd -r
其预期的 xxd
样式输入时它们是如何不存在的?当您从 od
的输出中删除额外的行时,它们怎么不存在了?不要混合和匹配不兼容的数据格式。
如果我完全删除偏移量,它似乎可以工作:
> echo TEST | od -tx1 -An
54 45 53 54 0a
> echo TEST | od -tx1 -An | xxd -r -p
TEST
> echo TEST | od -tx1 -An | xxd -r -p | od -tx1 -An
54 45 53 54 0a
宾果!注意字节前面的额外“”。好像没有效果。