アンパックで作業するとき、私はb3が3ビット長のビット列を返すことを期待していました。Perlのビット列の解析
私は(WebSocketのデータパケットを解析するために)書くことを期待していたコードされた:
my($FIN,$RSV1, $RSV2, $RSV3, $opcode, $MASK, $payload_length) = unpack('b1b1b1b1b4b1b7',substr($read_buffer,0,2));
私はこれは私が望んでいたものを行っていないことに気づきました。
上記のテンプレートの代わりにb16を使用した場合、最初の変数に2バイト全体が「1000000101100001」としてロードされます。
これは素晴らしいことですが、問題はありません。
これまでのところ、部分文字列を使用することで使用できますが、これを行うには良い方法がありますか?私は、作成しようとしたものに似たテンプレートでそのビット列を処理する方法があることを望んでいました。右側のパケットの仕様と左側の変数のリストを渡すことができる、ある種の機能ですか?
編集:私は正規表現でこれをやりたいとは思わない。なぜなら、非常にタイトなループになり、多く発生するからだ。
Edit2:理想的には、ビットストリングを(ブール値、整数など)として評価する必要があることを指定できることは理想的です。
'$ read_buffer'には何がありますか? –
@SinanÜnür$ read_bufferはパケットのバイナリデータです – GoldenNewby