python实现linux命令xxd

一. linux xxd -i功能

linux系统xxd命令使用二进制或十六进制格式显示文件内容。若未指定outfile参数,则将结果显示在终端屏幕上;否则输出到outfile中。详细的用法可参考linux命令xxd。

本文主要关注xxd命令-i选项。使用该选项可输出以inputfile为名的c语言数组定义。例如,执行echo 12345 > test和xxd -i test命令后,输出为:

unsigned char test[] = {
0x31, 0x32, 0x33, 0x34, 0x35, 0x0a
};
unsigned int test_len = 6;

可见,数组名即输入文件名(若有后缀名则点号替换为下划线)。注意,0x0a表示换行符lf,即’\n’。

二. xxd -i常见用途

当设备没有文件系统或不支持动态内存管理时,有时会将二进制文件(如引导程序和固件)内容存储在c代码静态数组内。此时,借助xxd命令就可自动生成版本数组。举例如下:

1) 使用linux命令xdd将二进制文件vdslbooter.bin转换为16进制文件dslbooter.txt:

xxd -i < vdslbooter.bin > dslbooter.txt

其中,’-i’选项表示输出为c包含文件的风格(数组方式)。重定向符号’

Posted in 未分类

发表评论