bashで符号なし10進数(1 <<32未満)を4バイト(2進数)に変換するには?

bashで符号なし10進数(1 <<32未満)を4バイト(2進数)に変換するには?

例:

$ decimal=$(( RANDOM << 17 | RANDOM << 2 | RANDOM >> 13 ))
$ echo $decimal
$ printf "%08x" $decimal | xxd -r -p >bytes

結果はbytesファイルにあります。

まず、16進数に不必要に変換せずに単一のコマンドで実行できますか?

ベストアンサー1

printf組み込み関数を使用して、8進コードで提供されたバイトをエクスポートできます。

x=1193046
printf "$(printf "\\%03o" $((x>>24&255)) $((x>>16&255)) $((x>>8&255)) $((x&255)))"

おすすめ記事