Files
如何將特定字節寫入文件?
給定一個
myfile
包含以下內容的文件:$ cat myfile foos
文件的 hexdump 為我們提供了內容:
$ hexdump myfile 6f66 736f 000a
目前,我可以通過在 ascii 中指定內容來創建文件,如下所示:
$ echo foos > myfile
是否可以通過以十六進製而不是 ascii 給出確切的字節來創建文件?
$ # How can I make this work? $ echo --fake-hex-option "6f66 736f 000a" > myfile $ cat myfile foos
更新:為了清楚起見,我提出的問題是詢問如何將少量字節寫入文件。實際上,我需要一種將大量十六進制數字直接傳輸到文件中的方法,而不僅僅是 3 個字節:
$ cat hexfile 6f66 736f 6f66 736f ... $ some_utility hexfile > myfile $ cat myfile foosfoosfoosfoos...
這是
hexundump
我個人收藏的腳本:#!/usr/bin/env perl $^W = 1; $c = undef; while (<>) { tr/0-9A-Fa-f//cd; if (defined $c) { warn "Consuming $c"; $_ = $c . $_; $c = undef; } if (length($_) & 1) { s/(.)$//; $c = $1; } print pack "H*", $_; } if (!eof) { die "$!"; } if (defined $c) { warn "Odd number of hexadecimal digits"; }
您可以使用
echo -e
:echo -e "\x66\x6f\x6f"
請注意,這
hexdump -C
就是您希望以字節順序轉儲文件內容而不是被解釋為網路字節順序中的 4 字節字的內容。