大家好,又见面了,我是你们的朋友全栈君。
Linux中hexdump命令
-
简介
hexdump主要用来查看“二进制”文件的十六进制编码。*注意:它能够查看任何文件,不限于与二进制文件。*
-
语法
hexdump [选项] [文件]…
-
选项
- –n length:格式化输出文件的前length个字节
- –C:输出规范的十六进制和ASCII码
- -b:单字节八进制显示
- -c:单字节字符显示
- -d:双字节十进制显示
- -o:双字节八进制显示
- -x:双字节十六进制显示
- -s:从偏移量开始输出
- -e 指定格式字符串,格式字符串由单引号包含,格式字符串形如:’a/b “format1” “format2”。每个格式字符串由三部分组成,每个由空格分割,如a/b表示,b表示对每b个输入字节应用format1格式,a表示对每个a输入字节应用format2,一般a>b,且b只能为1,2,4,另外a可以省略,省略a=1。format1和format2中可以使用类似printf的格斯字符串。
- %02d:两位十进制
- %03x:三位十六进制
- %02o:两位八进制
- %c:单个字符等
- %_ad:标记下一个输出字节的序号,用十进制表示
- %_ax:标记下一个输出字节的序号,用十六进制表示
- %_ao:标记下一个输出字节的序号,用八进制表示
- %_p:对不能以常规字符显示的用.代替
- 同一行显示多个格式字符串,可以跟多个-e选项
-
使用举例
-
C语言保存二进制文件test
#include <stdio.h> #include <stdlib.h> int main() { FILE *fp_in; fp_in = fopen("test", "wb"); if (fp_in == NULL) { printf("open test failed\n"); return -1; } else { for (unsigned char i = 0; i < 100; i++) { fwrite(&i ,sizeof(unsigned char), 1, fp_in); } fclose(fp_in); } return 0; }
编译:g++ main.cpp -o main
执行:./main即可生成二进制文件test -
格式化输出文件
hexdump test
-
格式化输出文件的前10个字节
hexdump -n 10 test
-
格式化输出文件的前10个字节,并以16进制显示
hexdump -n 10 -C test
-
格式化输出从10开始的10个字节,并以16进制显示
hexdump -n 10 -C -s 20
-
格式化输出文件字符
hexdump -e ‘16/1 “%02X ” ” | “’ -e ‘16/1 “%_p” “\n”’ test
hexdump -e ‘1/1 “0x%08_ax “’ -e ‘8/1 “%02X ” ” * “’ -e ‘8/1 “%_p” “\n”’ test
hexdump -e ‘1/1 “%02_ad# “’ -e ‘/1 “hex = %02X * “’ -e ‘/1 “dec = %03d | “’ -e ‘/1 “oct = %03o”’ -e ‘/1 ” _\n”’ -n 20 test
-
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/125325.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...