如何使用linux命令将文本文件转换为二进制文件

如何使用linux命令将文本文件转换为二进制文件,linux,shell,unix,command-line,Linux,Shell,Unix,Command Line,我有文本(字符串)格式的二进制十六进制代码。如何使用诸如cat和echo之类的linux命令将其转换为二进制文件 我知道下面的命令是创建二进制test.bin的命令。但是如果这个hexcode在另一个.txt文件中呢?如何将文本文件的内容“cat”为“echo”并生成二进制文件 #echo-e“\x00\x001”>测试.bin使用xxd-r。它将十六进制转储还原为其二进制表示形式 及 编辑:-p参数也非常有用。它接受“普通”十六进制值,但忽略空格和行更改 因此,如果您有这样的纯文本转储: ec

我有文本(字符串)格式的二进制十六进制代码。如何使用诸如cat和echo之类的linux命令将其转换为二进制文件

我知道下面的命令是创建二进制test.bin的命令。但是如果这个hexcode在另一个.txt文件中呢?如何将文本文件的内容“cat”为“echo”并生成二进制文件


#echo-e“\x00\x001”>测试.bin

使用
xxd-r
。它将十六进制转储还原为其二进制表示形式

编辑
-p
参数也非常有用。它接受“普通”十六进制值,但忽略空格和行更改

因此,如果您有这样的纯文本转储:

echo "0000 4865 6c6c 6f20 776f 726c 6421 0000" > text_dump
您可以使用以下方法将其转换为二进制:

xxd -r -p text_dump > binary_dump
然后通过以下方式获得有用的输出:

xxd binary_dump

除了
xxd
,您还应该查看包/命令
od
hextump
。所有这些都是相似的,但是每个都提供了略微不同的选项,允许您根据所需需求定制输出。例如,
hextump-C
是传统的hextump,旁边有相关的ASCII翻译。

如果文件中有长文本或文本,您也可以使用该工具,允许您以文本格式描述一些二进制数据并生成二进制文件(或输出到stdout)。它允许更改尾数和数字格式,并接受注释

其默认格式为十六进制,但不限于此

首先获取并编译binmake

$ git clone https://github.com/dadadel/binmake
$ cd binmake
$ make
您可以使用
stdin
stdout
对其进行管道传输:

$ echo '32 decimal 32 61 %x20 %x61' | ./binmake | hexdump -C
00000000  32 20 3d 20 61                                    |2 = a|
00000005
或者使用文件。因此,创建文本文件
file.txt

# an exemple of file description of binary data to generate
# set endianess to big-endian
big-endian

# default number is hexadecimal
00112233

# man can explicit a number type: %b means binary number
%b0100110111100000

# change endianess to little-endian
little-endian

# if no explicit, use default
44556677

# bytes are not concerned by endianess
88 99 aa bb

# change default to decimal
decimal

# following number is now decimal
0123

# strings are delimited by " or '
"this is some raw string"

# explicit hexa number starts with %x
%xff
生成二进制文件
file.bin

$ ./binmake file.txt file.bin
$ hexdump file.bin -C
00000000  00 11 22 33 4d e0 77 66  55 44 88 99 aa bb 7b 74  |.."3M.wfUD....{t|
00000010  68 69 73 20 69 73 20 73  6f 6d 65 20 72 61 77 20  |his is some raw |
00000020  73 74 72 69 6e 67 ff                              |string.|
00000027

在一行程序中:
xxd-r-p以及如何反转上述操作?正如:xxd-r-p text_dump>binary_dump给我一个文件(binary_dump)。如何恢复将二进制转储转换为文本转储的操作???@EllyAmbet您可以使用xxd-p binary\u dump>text在我的linux上不工作猜测需要安装dependencies@JacquelineP. 什么依赖关系?它是一个C++11开源程序,因此它当然依赖于编译器g++,但没有外来的库。只使用标准库(我记得regex是std)。