ビット フラグのシーケンスを表す 16 進文字の 256 文字の文字列があり、それらをビット文字列に変換して&
、|
、vec
などで操作できるようにしようとしています。16 進文字列は、整数幅のビッグ エンディアン グループに書き込まれます。たとえば、8 バイトのグループがビット文字列 に"76543210"
変換されます。"\x10\x32\x54\x76"
つまり、最下位の 8 ビットは00001000
です。
問題は、pack
" h
" 形式が一度に 8 バイトではなく 1 バイトの入力に対して機能するため、直接使用しただけでは正しい順序で結果が得られないことです。現時点では、私はこれをやっています:
my $bits = pack("h*", join("", map { scalar reverse $_ } unpack("(A8)*", $hex)));
これは機能しますが、ハックな感じがします。もっときれいな方法があるはずですが、私のpack
-fu はあまり強くありません。この翻訳を行うためのより良い方法はありますか?