Files

如何將特定字節寫入文件?

  • January 29, 2021

給定一個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 字節字的內容。

引用自:https://unix.stackexchange.com/questions/55767