hexdump使用小技巧

简介: 本文乃fireaxe原创,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,并注明原作者及原链接。内容可任意使用,但对因使用该内容引起的后果不做任何保证。 作者:fireaxe_hq@hotmail.com 博客:fireaxe.blog.chinaunix.net 开发时经常会需查看非文本文件内容,最常见的16进制查看器就是hexdump。

本文乃fireaxe原创,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,并注明原作者及原链接。内容可任意使用,但对因使用该内容引起的后果不做任何保证。

作者:fireaxe_hq@hotmail.com
博客:fireaxe.blog.chinaunix.net

开发时经常会需查看非文本文件内容,最常见的16进制查看器就是hexdump。hexdump 看似简单,但还是有些小技巧的。

以文本文件tmpfile为例:

点击(此处)折叠或打开

  1. Happy New Year!
  2. Happy New Year!
  3. Happy New Year!
1)  最简单的方式
hexdump testfile

0000000 6148 7070 2079 654e 2077 6559 7261 0a21
*
0000030

这种方式是以两个字节为一组,其顺序取决于本机字节序。比如在x86架构上就是以blittle-endian方式显示,看起来会很费劲。
如第一行翻译成ascii码:
6148 7070 2079 654e 2077 6559 7261 0a21
aH     pp      y     Ne      w     e      ae     !r

为了避免这种情况,就要用到下面的”以字节方式查看“

2)  以字节方式查看
hexdump -C testfile -s skip -n number

00000000  48 61 70 70 79 20 4e 65  77 20 59 65 61 72 21 0a  |Happy New Year!.|
*
00000030

这种方式就不会有字节序问题了,而且还能同时显示16进制与ascii码,但存在的问题是,如果某几行的内容相同,会省略掉后几行,这个有时也会造成麻烦。如何避免省略呢?

3) 不要省略
hexdump -v testfile

0000000 6148 7070 2079 654e 2077 6559 7261 0a21
0000010 6148 7070 2079 654e 2077 6559 7261 0a21
0000020 6148 7070 2079 654e 2077 6559 7261 0a21
0000030

现在省略是没有了,但又回到了两字节显示的老路上,所以我们要把两种方式结合起来。

4) 字节方式显示且不要省略
hexdump -Cv testfile

00000000  48 61 70 70 79 20 4e 65  77 20 59 65 61 72 21 0a  |Happy New Year!.|
00000010  48 61 70 70 79 20 4e 65  77 20 59 65 61 72 21 0a  |Happy New Year!.|
00000020  48 61 70 70 79 20 4e 65  77 20 59 65 61 72 21 0a  |Happy New Year!.|
00000030

现在就好看多了,既是以单字节方式显示,又不会省略了。但有时文件很大,我们只想查看其中一段,怎么把呢?

5) 显示某一段
hexdump -Cv testfile -s skip -n number

fireaxe $ hexdump -Cv tmp.txt -n 1
00000000  48                                                |H|
00000001

fireaxe $ hexdump -Cv tmp.txt -n 2
00000000  48 61                                             |Ha|
00000002

fireaxe $ hexdump -Cv tmp.txt -n 3
00000000  48 61 70                                          |Hap|
00000003
fireaxe $ hexdump -Cv tmp.txt -s 1 -n 1
00000001  61                                                |a|
00000002
fireaxe $ hexdump -Cv tmp.txt -s 2 -n 1
00000002  70                                                |p|
00000003
fireaxe $ hexdump-Cv tmp.txt -s 3 -n 1
00000003  70                                                |p|
00000004

OK, 整个显示过程都可以自由控制了~~

本文乃fireaxe原创,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,并注明原作者及原链接。内容可任意使用,但对因使用该内容引起的后果不做任何保证。

作者:fireaxe_hq@hotmail.com
博客:fireaxe.blog.chinaunix.net

目录
相关文章
|
XML 存储 开发工具
|
缓存 NoSQL 应用服务中间件
万字攻略,社招腾讯天美C++后台面经,面试题整理(上)
万字攻略,社招腾讯天美C++后台面经,面试题整理
|
NoSQL Ubuntu Linux
掌握QEMU虚拟化技术:搭建ARM64+Linux调试环境实战指南
掌握QEMU虚拟化技术:搭建ARM64+Linux调试环境实战指南
platform_get_resource=NULL内核源码分析
platform_get_resource=NULL内核源码分析
130 0
|
Linux
nasm简单用法和dd指令解析
nasm简单用法和dd指令解析
257 0
|
机器学习/深度学习 移动开发 算法
秒懂算法 | 倍增与ST算法
本篇介绍了倍增的概念、例题以及ST算法。
255 0
秒懂算法 | 倍增与ST算法
|
存储 机器学习/深度学习 网络协议
IA-32架构CPU运行环境
IA-32架构CPU运行环境
690 0
IA-32架构CPU运行环境
高通平台开发系列讲解(UART篇)高速UART IPC调试方法
高通平台开发系列讲解(UART篇)高速UART IPC调试方法
463 0
高通平台开发系列讲解(UART篇)高速UART IPC调试方法
|
XML 传感器 测试技术
开发调试工具:USB转IIC/I2C/SPI/UART适配器模块可编程开发板
发个方便测试I2C、SPI、1Wire接口的工具模块 总的思路是通过USB或者UART接口发送一些协议字符串,由模块转换成上面几种接口的硬件时序电信号,实现与这几种接口芯片、设备的快速测试。 首先声明一下,大家都是搞硬件开发的,这几种接口当然是很简单的事,但有些时候对于一个新的设备或者芯片的测试,有个现成的工具当然更顺手,节省时间,也更可靠嘛。
开发调试工具:USB转IIC/I2C/SPI/UART适配器模块可编程开发板