1
我想通過TCP套接字發送字節信息。我有一個靜態字節是十六進制字0xaa
。在靜態字節上,我需要連接動態字節,MSB始終爲0,然後我有6-4個可變的位(從000到100),比從3-0的位也是可變的(從0000 - 1000)。做這個的最好方式是什麼?我已經看到,我可以使用bitarray
和BitArray
類bitstring
但我想知道什麼是這個問題的最佳解決方案。此外,我需要知道如何將bitarray轉換回字節,以便我可以通過TCP發送它。什麼,我需要逐字節地形成字節並連接字節
例子:
leading_byte = 0xaa
bit7 = 0 (bit)
options = { 'a' : 000 (bits), 'b' : 001 ...}
versions = { 'i' : 0000 (bits), 'i' : 0001 ...}
bits6_4 = options['a']
bits3_0 = versions['i']
byte_message = leading_byte + bit7 + bit6_4 + bits3_0
socket.send(byte_message)
謝謝!但如何獲得bits6_4作爲3位值,或bit7作爲signel位在Python? – sstevan
@ user3599280:可以使用邏輯反向的東西來完成 - 使用'&'運算符應用位掩碼的'ord()'函數並向相反的方向移動。 – martineau
謝謝。我發現這個解決方案更簡單bytes_version ['b'] second_byte = bitarray(snd)msg = leading_byte + second_byte.tobytes()' – sstevan