查看文件的字节信息

阅读 1.6k

对于前端工程师而言,很多时候需要和字符串打交道;而对于后端和系统级开发工程师来说,很多时候则需要和字节打交道。本篇分享几个查看文件字节的工具,由于我主要使用MacOS和Linux系统,所以,只介绍这两个平台的工具。

先介绍三种工具,它们一般都不需要安装,随操作系统开箱即用,第一款就是vi。

vi

vi作为老牌经典工具,基本上程序员都知道,但是,可能很多人并不知道它能够以二进制方式查看文件。

vi -b big.png

通过添加-b参数,告诉 vi 以 binary mode 查看文件。但是,这种方式查看显示的信息并不方便阅读。

od

od, 即 octal, decimal, hex, ASCII dump这款工具非常推荐,它提供了丰富的选项和参数,使用起来也很方便,比如,要用一位十六进制格式查看big.png文件,只查看前18个字节:

od -t x1 -N 18 big.png 

-t: 表示type,x1表示以一位十六进制格式查看, -N表示长度。

输出结果如下:

0000000    89  50  4e  47  0d  0a  1a  0a  00  00  00  0d  49  48  44  52
0000020    00  00                                                        
0000022

如果要看某个文件的最后两个字节,也可以:

od -t x1 -j 57490 factor.jpg

首先,查看factor.jpg的文件大小,为 57492 bytes,通过-j 跳过前面57490个字节,输出最后2个字节:

0160222    ff  d9                                                        
0160224

最后两个字节为ff 和 d9,正是jpeg图片的EOI的值。

hexdump

第三款为 hexdump,这个和od的功能类似。

比如,要用一位十六进制格式查看big.png文件,只查看前18个字节:

hexdump -n 18 -C big.png

输出如下:

00000000  89 50 4e 47 0d 0a 1a 0a  00 00 00 0d 49 48 44 52  |.PNG........IHDR|
00000010  00 00                                             |..|
00000012

这个和od得到的十六进制值是一样的,不过-C表示用 hex + ASCII 来显示,双竖线中间显示的就是 ASCII字符。

如果不使用-C,而用-x,得到的结果是:

0000000    5089    474e    0a0d    0a1a    0000    0d00    4849    5244
0000010    0000                                                        
0000012

-x:每两个字节来显示。

用编程语言读取

除此之外,还可以使用编程语言来读取文件的字节信息,这里以Node.js来展示:

import fs from 'fs/promises'

const buff = await fs.readFile('image/factor.jpg')

console.log(buff)

创建一个名称为util.mjs的文件,内容如上,执行 node util.mjs 后,得到如下信息:

<Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 01 00 01 00 00 ff db 00 43 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ... 57442 more bytes>

上面使用readFile函数将文件读取为Buffer类型,可以轻松查看其中的字节值。

小结

三款工具中,最推荐od,当然,你也可以安装专门的GUI工具来查看文件的字节值。相比专门的GUI工具,这几个工具的最大好处就是方便,开箱即用。很多时候,方便简洁,开箱即用,对用户体验来说非常非常重要,你不用浪费宝贵的时间来折腾无关的信息,直接打开电脑就能用,Enjoy code and life。

最后编辑于: 2024-07-21

评论(0条)

(必填)
复制成功