0

我正在尝试od从没有工具hexdump的系统中撤消命令。base64

我这样做(当然,实际上,编码发生在“小”系统上,解码是在我的工作站上完成的,但是为了测试它,我先在一行中尝试整个方式):

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添加那些00s?

4

2 回答 2

1

xxd -r由于尝试解析格式与预期格式不同的输入但未能解析,您得到了这三个 nul 字节。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当您从' 的输出中修剪那条额外的行时,它们怎么不存在?不要混合和匹配不兼容的数据格式。

于 2019-07-19T09:03:04.830 回答
0

如果我完全删除偏移量,它似乎可以工作:

> 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

答对了!注意字节前面的额外“”。它似乎没有任何效果。

于 2019-07-19T10:35:45.040 回答