linux heapdump,linux hexdump,Linux中hexdump命令用法

linux heapdump,linux hexdump,Linux中hexdump命令用法

本文主要介绍了hexdump命令在Linux中的用法,并给出了命令输出结果的例子。有兴趣就去学吧。

hexdump命令通常用于检查“二进制”文件的十六进制代码。从手册上看,要查的内容很多,比如ASCII,十进制,十六进制,八进制。

参数:

hexdump [-bcCdovx] [-e格式_字符串] [-f格式_文件] [-n长度] [-s跳过]文件

示例:

添加一个新的文本文件,并将以下内容添加到测试文本中:

[root@node61测试]# cat测试

abcde

ABCDE

1)最简单的观点

[root@node61测试]# hexdump测试

0000000 6261 6463 0a 65 4241 4443 0a 45

00000c

第一列:表示文件的偏移量。

第2列:一组两个字节的十六进制系统。

通过上面的输出,翻译出来的文本是:badc0aeBADC0aE(注意:在Linux中,换行的十六进制码n是0a,在windows中,换行的十六进制码rn是0d 0a),下图是ASC码表对应的十进制码。

细心的读者可能已经发现了为什么翻译的文本是逆序的。文中内容不是:abcde

ABCDE?

其实这是X86 CPU架构造成的,也做过一些研究:字节顺序。

字节顺序:其实就是字节的顺序。这里,对于大于两个字节的字节,没有顺序。然而,在我们的大部分工作中,我们很少直接处理字节顺序。

有两种类型的字节顺序分类:大端和小端。

相关定义如下:

I) Little-Endian表示低位字节在存储器的低位地址端放电,高位字节在存储器的高位地址端放电。(X86 CPU系列采用的位顺序)

Ii) Big-Endian表示高位字节在存储器的低位地址端放电,低位字节在存储器的高位地址端放电。

Iii)网络端序:TCP/IP的协议将端序定义为Big-Endian,所以TCP/IP中使用的端序通常称为网络端序。

以下程序用于确定CPU采用哪种模式。

# includestdio.h

int main(){

联盟w

{

int a;

char b;

} c;

c . a=1;

if (c.b==1){

printf( CPU是Litle-Endian n );

}否则{

printf( CPU是Big-Endian n );

}

返回0;

} /*结束检查CPU*/

gcc -o checkCPU.o checkCPU.c

[root@node61测试]#。/checkCPU.o

CPU是小字节序的

我的本地虚拟机是X86小端模式。

到目前为止,为什么上面用hexdump是逆序的?

有没有更方便的查看方式?是的,这也是一种常见的方式,见下面b)的介绍;

b)以十六进制和相应的ASCII字符显示文件中的字符

[root @ node 61 test]# hex dump-ctest #常用

000000000 61 62 63 64 65 0a 41 42 43 44 45 0a | abcde . abcde . |

0000000c

十六进制和ascii码都可以在这里显示。

c)以偏移格式输出,参数-s

[root@node61测试]# hexdump -C测试

000000000 61 62 63 64 65 0a 41 42 43 44 45 0a | abcde . abcde . |

0000000c

[root@node61测试]# hexdump -C -s 6测试

00000006 41 42 43 44 45 0a |ABCDE。|

0000000c

第一行abcde newline的字符没了。

hexdump还有很多其他用途,详情请参考man hexdump。

这就是本文的全部内容。如果还有其他问题或不明白的地方,欢迎投稿或在下方留言。

linux heapdump,linux hexdump,Linux中hexdump命令用法