定制hexdump的打印输出格式

背景

hexdump是Linux系统下一个以十六进制或ASCII形式输出文件内容的工具,通常-b -c -C -d等选项提供的打印格式就够用了,但有时板卡输出的数据格式比较特殊,想用文本比较工具(例如kidff3)比对的话,就需要将hexdump的输出指定成匹配的格式

自定义格式串

通常使用-e选项传递自定义格式串。

简介

hexdump的自定义格式串由任意多个格式单元组成
每个格式单元由3个基本元素组成:

  1. 迭代数
  2. 字节数
  3. 模式串

模式串

这个是最好理解的,跟printf的模式串非常像,%d表示打印十进制整数%x表示打印十六进制整数,等等。

字节数

模式串对应的字节数,例如%c对应1%08x对应4

迭代数

这个比较难理解,其实就是代表模式串重复多少次

注意

每个格式单元前都要有-e选项,当你的输出格式比较复杂,一个格式单元hold不住时,可以将多个格式单元组合起来

格式示例

hexdump -v -e '4/4 "%08X "' -e '"\n"' bin.o
  1. -v选项表示不精简重复内容
  2. 第一个-e表示4个迭代、每次迭代解析4字节内容、每个4字节按模式串"%08X "打印
  3. 第二个-e没有迭代数也没有字节数,仅仅是个模式串"\n"来让每个迭代都输出换行
  4. bin.o是输入文件,一般是导出的二进制数据

上面命令的输出:

464C457F 00010102 00000000 00000000
003E0001 00000001 00000000 00000000
00000000 00000000 0000D2D0 00000000
00000000 00000040 00400000 0025002A
000000E8 89485500 0FC35DE5 0000441F
000000E8 C0315500 5DE58948 001F0FC3
000000E8 85485500 F28948F6 00058B48
48000000 4853E589 00D09F8B 19740000
40B08D48 48000001 8548028B 480A74F6
0574C085 000000E8 54438B00 BA504339

总结

hexdump非常适合用来格式化输出buffer内容,是调试驱动的利器。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用hexdump打印字节数组是一种显示字节流的方式,类似于Linux命令行的hexdump输出。这种方法可以将字节数组以十六进制的形式显示出来,方便查看和分析字节流的内容和结构。在Netty中,也提供了类似winhex的工具类,可以用于打印字节流。 hexdump的输出结果可以按照一定的格式进行排列,通常以十六进制表示每个字节的值,并且在一行中也会显示对应的ASCII字符。这样可以同时查看字节的十六进制值和对应的字符表示,以便更好地理解和分析字节流的含义。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [【Linux C语言编程】使用hexdump打印字节数组](https://blog.csdn.net/szullc/article/details/120176216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Netty中用于打印字节流(类似winhex)的工具类及其改进](https://blog.csdn.net/nmgrd/article/details/98094598)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值