十六进制转储 (hd) 或八进制转储 (od) 可以用来将二进制数据显示为零和一吗?

十六进制转储 (hd) 或八进制转储 (od) 可以用来将二进制数据显示为零和一吗?

有没有办法将文件的二进制内容显示为零和一?

因此,不要像这样:

 DE AD BE EF

我们可以得到这样的输出:

11011110 10101101 10111110 11101111

有没有办法通过基本的命令行程序/开关来做到这一点?

答案1

为什么不使用xxd? 使用方式如下:xxd -b file

例如,执行 axxd -b google-chrome-stable_current_i386.deb | head可得到:

0000000: 00100001 00111100 01100001 01110010 01100011 01101000  !<arch
0000006: 00111110 00001010 01100100 01100101 01100010 01101001  >.debi
000000c: 01100001 01101110 00101101 01100010 01101001 01101110  an-bin
0000012: 01100001 01110010 01111001 00100000 00100000 00100000  ary   
0000018: 00110001 00110100 00110000 00111001 00110111 00111001  140979
000001e: 00110001 00111000 00110001 00110101 00100000 00100000  1815  
0000024: 00110000 00100000 00100000 00100000 00100000 00100000  0     
000002a: 00110000 00100000 00100000 00100000 00100000 00100000  0     
0000030: 00110001 00110000 00110000 00110110 00110100 00110100  100644
0000036: 00100000 00100000 00110100 00100000 00100000 00100000    4   

如果需要,您可以按照以下cut步骤截断最左边的列和最右边的列xxd -b google-chrome-stable_current_i386.deb | head | cut -b10-62

00100001 00111100 01100001 01110010 01100011 01101000 
00111110 00001010 01100100 01100101 01100010 01101001 
01100001 01101110 00101101 01100010 01101001 01101110 
01100001 01110010 01111001 00100000 00100000 00100000 
00110001 00110100 00110000 00111001 00110111 00111001 
00110001 00111000 00110001 00110101 00100000 00100000 
00110000 00100000 00100000 00100000 00100000 00100000 
00110000 00100000 00100000 00100000 00100000 00100000 
00110001 00110000 00110000 00110110 00110100 00110100 

答案2

如果我们有十六进制转储,并且根据问题中给出的示例,可能的解决方案如下所示:

echo DE AD BE EF | xxd -r -p | xxd -b

在哪里

echo DE AD BE EF输入示例数据(可以保留空格)

xxd -r -p将十六进制转储转换为原始字节

xxd -b将原始字节转换为二进制转储

输出:

00000000: 11011110 10101101 10111110 11101111 ....

相关内容