GNU/Linux >> Linux の 問題 >  >> Linux

Bashを使用して整数をバイナリファイルに書き込む方法は?

これは私が思いつくことができるものです:

int=65534
printf "0: %.8x" $int | xxd -r -g0 >>file

エンディアンに応じて、バイトオーダーを交換したい場合があります:

printf "0: %.8x" $int | sed -E 's/0: (..)(..)(..)(..)/0: \4\3\2\1/' | xxd -r -g0 >>file

例 (デコードされているため、表示されます):

printf "0: %.8x" 65534 | sed -E 's/0: (..)(..)(..)(..)/0: \4\3\2\1/' | xxd -r -g0 | xxd
0000000: feff 0000                                ....

これは署名なし用です int、int が signed の場合 値はです 2 の補数を計算する必要があります。簡単な計算。


次の関数を使用して、数値の VALUE を対応する文字に変換できます:

chr() {
  printf \\$(printf '%03o' $1)
}

使用するマシン/アーキテクチャの正しい順序 (エンディアン) で、バイト値を個別に変換する必要があります。したがって、バイナリ出力をサポートする別のスクリプト言語を少し使用すると、最適な結果が得られると思います。


これがうまくいくかどうかを確認してください

perl -e "print pack('L',`stat -c %s in.txt`)">>out.bin 

Linux
  1. bash スクリプトを使用してファイル名のスペースを置き換える方法

  2. BashでCSVファイルを解析するには?

  3. Bashを使用してファイルの最後から2番目の行を読み取る方法は?

  1. 変数を使用してBashを使用して複数行の文字列を記述する方法は?

  2. Linux/bashでバイナリファイルのテキスト部分を抽出するには?

  3. ddを使用してFFでファイルをパディングする方法は?

  1. Bashでループを作成する方法

  2. echo を使用して非 ASCII 文字を書き込むにはどうすればよいですか?

  3. パイプでティーを使用しているときにstderrをファイルに書き込むにはどうすればよいですか?