Lak*_*ith 4 command-line cat wc
我有一个 .log 文件,它是一个二进制文件 (BSC0000.log)。所以在十六进制查看器(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
Run Code Online (Sandbox Code Playgroud)
可以猜测这可能是因为 之间的空格。但是它应该大致像 10539157 + 10539157/2 但是为什么这个值是 31617470。
但是 10539157 * 3 = 31617471 这是来自命令行的值 +1
一个字节有 8 位。因为 hex 使用 16 个字符,0-9a-f,所以每个字符只能显示 4 位。 显示一个字节需要两个十六进制字符。 再加上十六进制显示中的大多数字符后面都有一个空格,您就会明白为什么十六进制显示占用的字节数是二进制文件的三倍。
让我们创建一个包含单个字节的文件:
$ printf 'a' >afile
$ wc afile
0 1 1 afile
Run Code Online (Sandbox Code Playgroud)
现在,让我们显示它,例如hexdump -C:
$ hexdump -C afile
00000000 61 |a|
00000001
Run Code Online (Sandbox Code Playgroud)
该a字符为 ASCII 字符61(十六进制)。文件中的单个字节需要两个字符以十六进制显示(如果十六进制后面有空格,则需要三个字符)。
| 归档时间: |
|
| 查看次数: |
1648 次 |
| 最近记录: |