1

複数の変数を bytearray の 1 つの要素に結合しようとしています。

私は変数を持っています:バージョン、パディング、拡張子、サイズのcc:2b、1b、1b、4b

それらをその順序で1バイトとして結合するにはどうすればよいですか?

4

2 に答える 2

2

シフトとビットマスキングを使用して、それらをバイトにパックできます。

version, padding, extension, cc = 2, 0, 1, 3
byte = ((version & 3) << 6) | ((padding & 1) << 5) | ((extension & 1) << 4) | (cc & 7)
byte
# OUT: 147

最初にそれらをマスクする必要があることに注意してください。そうしないと、値が範囲を超えた場合に他のフィールドが破壊されます。

于 2012-11-19T02:11:07.530 に答える
2

変数が整数の場合は、ビット シフトとビットごとの OR 演算を使用して 8 ビットで構成される値を形成し、それを bytearray の必要な場所に格納できます。

ba[i] = version << 6 | padding << 5 | extension << 4 | cc
于 2012-11-19T02:05:55.250 に答える