Я хотел бы проанализировать и разбить шестнадцатеричный байтовый массив, считанный с CAN автомобиля.Все 64 бита были прочитаны как bytearray(b'\xa0\xc6\xa6\xc2\x06\xe3)B')
, и я хотел бы разделить его на основе битовых позиций.Например, мне нужны первые 6 бит 101000
.
Основываясь на некотором прочтении, я завершил преобразование шестнадцатеричного байтового массива в двоичную строку и успешно проанализировал его.Мой нынешний подход:
orig_data = bytearray(b'\xa0\xc6\xa6\xc2\x06\xe3)B')
def hex2bin(hex_string):
scale = 16
num_of_bits = 8
return bin(int(hex_string, scale))[2:].zfill(num_of_bits)
bin_str = hex2bin(bytes(orig_data).hex())
print(bin_str[:6])
Поскольку мне нужно иметь дело с огромным количеством данных, передаваемых с высокой скоростью, мне было интересно, есть ли более быстрый способ сделать это, чем текущий подход, который я принял?