複数の変数を bytearray の 1 つの要素に結合しようとしています。
私は変数を持っています:バージョン、パディング、拡張子、サイズのcc:2b、1b、1b、4b
それらをその順序で1バイトとして結合するにはどうすればよいですか?
シフトとビットマスキングを使用して、それらをバイトにパックできます。
version, padding, extension, cc = 2, 0, 1, 3
byte = ((version & 3) << 6) | ((padding & 1) << 5) | ((extension & 1) << 4) | (cc & 7)
byte
# OUT: 147
最初にそれらをマスクする必要があることに注意してください。そうしないと、値が範囲を超えた場合に他のフィールドが破壊されます。
変数が整数の場合は、ビット シフトとビットごとの OR 演算を使用して 8 ビットで構成される値を形成し、それを bytearray の必要な場所に格納できます。
ba[i] = version << 6 | padding << 5 | extension << 4 | cc