Linux下怎么查看16进制文件

Linux下怎么查看16进制文件,第1张

1、xxd - make a hexdump or do the reverse.

能够显示文件对应的十六机制格式,同时还能将修还后的十六进制格式反写回文件,一般与vim结合使用。(在 vi 或 vim 的命令状态下)

:%!xxd 将当前文本转换为16进制格式。

:%!xxd -r 将当前文件转换回文本格式。

如果没有此命令,请先安装vim-common

rpm -qf /usr/bin/xxd

vim-common-7.4.160-1.el7_3.1.x86_64

2、od - dump files in octal and other formats

可以通过指定参数为查看十六进制

-A 指定左边侧栏显示的地址基数,默认为八进制

-t 指定输出单元的进制格式和字节数

-x = -t x2 输出单元为双字节(注意:每单元内排列顺序从左到右为 [高字节|低字节])

例:od -A x -t x1 file| more

3、hexdump - ascii, decimal, hexadecimal, octal dump

查看十六机制的首选工具。

-c 每单元以字节为单位,显示出对应的ASCII码

-C 每单元以字节为单位,同时显示十六机制和ASCII码

4、linux也有GUI的十六进制编辑器,例如ghex和bless

awk '{if (NR <20){for (i=2i<18i++){sum += $i}}else{exit}} END{printf "Total:%x\n", sum}' $file

$file是你的文件名

1、二进制转换为十进制

二进制数00111从低位到高位的位权依次是2的0次幂1、2的1次幂2、2的2次幂4、2的3次幂8、2的4次幂16。

理解了二进制计数的基数和位权,就可以进行数制转换了。00111如何转换成十进制计数呢?转换很简单,将二进制数从高位到低位每个数字乘以相应的位权然后求和就可以了。

00111(二进制)= 0 * 2^(5-1) + 0 * 2^(4-1) + 1 * 2^(3-1) + 1 * 2^(2-1) + 1 * 2^(1-1)

= 0 * 16 + 0 * 8 + 1 * 4 + 1 * 2 + 1 * 1

= 7(十进制)

2、十进制转换为二进制

十进制整数到二进制整数的转换可以采用“除2取余,逆序输出”法,

具体转换过程是,用2去除一个十进制数,得到商和余数,然后再用2去除商,又会得到商和余数,循环往复直至商为0为止。如果是十进制小数转二进制小数,则采用“乘2取整,顺序输出”。转换过程如下图所示:

3、二进制和八进制之间的转换

二进制转八进制:取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。

如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。

4、八进制转二进制:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。

5、二进制和十六进制之间的转换

二进制转十六进制:取四合一法,即从二进制的小数点为分界点,向左(向右)每四位取成一位,接着将这四位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。

如果向左(向右)取四位后,取到最高(最低)位时候,如果无法凑足四位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足四位。

6、十六进制转二进制:取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。

7、十进制和八进制之间、十进制和十六进制之间都是先把十进制转换为二进制,然后在转换为八进制或者十六进制。

扩展资料

某进制计数制允许选用的基本数字符号的个数成为基数。一般来说,N进制的基数为N,可进行选用的基本数字符号有N个,分别为0到N-1。

比如十六进制的基数为16,可供选择的基本数学符号为0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F十六个。

位权是指,该进位制中每一固定位置对应的单位值,简称为权。

以十进制计数制来说,计数单位分别为个位、十位、百位、千位、万位、十万位……,其中个位数表示数值1、十位数表示数值10、百位数表示数值100、千位数表示数值1000、……,每个位数表示的数值叫位权。

位权通过计算基数的n-1次幂就可以得到,这里的n是指位数所在数字中的位置。在十进制中就是10的(n-1)次幂。

例如,对十进制数1260来说,个位数是1260的第一个数字,因此n为1;十位数是第二个数字,因此n为2;百位数是第三个数字,因此n为3;千位数是第四个数字,因此n为4。

由此,个位数的位权为10的1-1次幂是1,十位数的位权为10的2-1次幂是10、百位数的位权为10的3-1次幂是100、千位数的位权为10的4-1次幂是1000。

1260 = 1 * 10^(4-1) + 2 * 10^(3-1) + 6 * 10^(2-1) + 0 * 10^(1-1)

= 1 * 1000 + 2 * 100 + 6 * 10 + 0 * 1

= 1000 + 200 + 60 + 0

参考资料来源:百度百科-进制


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7634065.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-08
下一篇2023-04-08

发表评论

登录后才能评论

评论列表(0条)

    保存