特定の値を持つバイナリファイルを作成するには?

特定の値を持つバイナリファイルを作成するには?

充填のみを作成する必要があります11111111

ゼロパディングされたバイナリファイルを作成する方法だけを知っています。

dd if=/dev/zero bs=18520 count=1

Beanを埋めるためにパイプラインでどのコマンドを使用する必要があるかを教えてください1awkこのような場合にはどのように使用する必要がありますか?

答え1

おそらくゼロを希望の値trに変換してから、またはなどを使用して長さを切り取るのが最も簡単な方法です。/dev/zeroddhead

これは18520バイトを書き、すべてのビットは1なので、値は0xff、255、または8進数で377です。入力は次のようにする必要があるからです。

< /dev/zero tr '\000' '\377' | head -c 18520 > test.bin

(16進数または10進数を8進数に変換するには、などを使用できますprintf "%o\n" 0xff。)


1バイト文字列より長いストリームを生成するには、Perlを使用します。

perl -e '$a = "abcde" x 1024; print $a while 1' | head ...

"\xff"(もちろん、またはそこでも使用できます"\377"。私は主に小さな書き込みを最小限に抑えるために繰り返し演算子を使用しています。x 1024これを変更するとパフォーマンスに影響を与える可能性があります。)

答え2

使用しないでくださいdd bs=…:信頼できませんibs=1 obs=1エラーが発生しやすいツールを使用または使用してください。ほとんどのhead実装ではバイトを計算できます。

</dev/zero head -c 18520

ファイルをゼロ以外の単一バイトで埋めるには、バイト値の変更を使用しますtr。誰にでも:

</dev/zero head -c 18520 | tr '\0' '\377'

答え3

あなたの質問に具体的に答えるためにddを使用すると、パイプでtrとうまく機能します。

dd if=/dev/zero bs=18520 count=1 | tr '\000' '1' > test.bin

ただし、より適切な回答を提供するには、この範囲を明確にする必要があります。

関連情報