我有一个 .log 文件,它是一个二进制文件 (BSC0000.log)。因此,在 HEX 查看器 (OKteta) 中查看它,并将其直接导出到字符串 (split_space.txt)。中间有空格
00 DF 00 45
。
问题是,当我计算两个文件中的字符时,显示出巨大的差异。
laksith@laksithPC:~/Desktop/test$ cat split_space.txt | wc -c
31617470
laksith@laksithPC:~/Desktop/test$ cat BSC0000.log | wc -c
10539157
猜测可能是因为中间有空格,但其实应该是10539157+10539157/2,怎么会是31617470这个值呢?
但 10539157 * 3 = 31617471 是命令行中的值 +1
答案1
一个字节有 8 位。由于十六进制使用 16 个字符(0-9a-f),因此每个字符只能显示 4 位。 需要两个十六进制字符来显示一个字节。 除此之外,十六进制显示中的大多数字符后面都有一个空格,您就会明白为什么十六进制显示占用的字节数是二进制文件的三倍。
例子
让我们创建一个包含单个字节的文件:
$ printf 'a' >afile
$ wc afile
0 1 1 afile
现在,让我们用以下方式显示它,例如hexdump -C
:
$ hexdump -C afile
00000000 61 |a|
00000001
该a
字符是 ASCII 字符61
(十六进制)。文件中的单个字节需要两个字符才能以十六进制显示(如果十六进制后面有空格,则需要三个字符)。