Обработка байтовых данных после преобразования их в биты в Python - PullRequest
0 голосов
/ 19 февраля 2019

Может ли кто-нибудь помочь мне с преобразованием 7 byte данных в двоичное значение в Python?

Сервер получает данные 7 byte, используя MQTT, и я хочу преобразовать эти данные в двоичный файл, разбить еговниз и извлекать конкретные длины битов из этих данных в Python для дальнейшей обработки.

Если я получил:

810be320cab3d

Я хочу преобразовать его в:

1000000100001011111000110010000011001010101100111101

сохраните это значение в переменной, а затем разбейте это значение на пару частей, чтобы я мог нарезать значение, используя str() или truncate(), я надеюсь.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019
hex2bin_map = {
   "0":"0000",
   "1":"0001",
   "2":"0010",
   "3":"0011",
   "4":"0100",
   "5":"0101",
   "6":"0110",
   "7":"0111",
   "8":"1000",
   "9":"1001",
   "A":"1010",
   "B":"1011",
   "C":"1100",
   "D":"1101",
   "E":"1110",
   "F":"1111",
}

print('0b{:016_b}'.format(int('810be320cab3d', 16)))

Укороченная версия:

print(bin(int('810be320cab3d', 16))[2:])

ВЫХОД:

1000000100001011111000110010000011001010101100111101
0 голосов
/ 19 февраля 2019

Вот простой способ:

data = '810be320cab3d'

bits = { '0':'0000', '1':'0001', '2':'0010', '3':'0011'
         '4':'0100', '5':'0101', '6':'0110', '7':'0111',
         '8':'1000', '9':'1001', 'a':'1010', 'b':'1011',
         'c':'1100', 'd':'1101', 'e':'1110', 'f':'1111' }

def main():
    r = ""
    for c in data:
        r += bits[c]
    print r

main()

Вывод:

1000000100001011111000110010000011001010101100111101
...