バイナリファイル(BSC0000.log)である.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の16文字を使用するため、1文字あたり4ビットしか表示できません。1バイトを表示するには2つの16進文字が必要です。それに加えて、16進表示のほとんどの文字の後にスペースがあり、16進表示がバイナリファイルの最大3倍のバイトを占める理由がわかります。
1バイトを含むファイルを作成しましょう:
$ printf 'a' >afile
$ wc afile
0 1 1 afile
それでは、たとえばhexdump -C
:で表示してみましょう。
$ hexdump -C afile
00000000 61 |a|
00000001
a
文字は、ASCII文字である61
(16進)。ファイル内の1バイトは、16進数で表示するのに2文字かかります(16進数の後にスペースがある場合は3文字)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加