Преобразование байтов в бин дает неправильный размер? - PullRequest
0 голосов
/ 16 октября 2019

Ну, теория говорит, что 1 байт информации равен 8 битам. Общеизвестный факт. Дело в том, что у меня есть несколько вопросов, касающихся следующего фрагмента кода.

import sys

bytes = b'\x9c!\xff\xe8\xd4\x01\x10\x04\x9cA\x00\x18\xd4\x01H\x00\xd4\x01P\x08\xd4\x01`\x0c\xd4\x01p\x10\xd4\x01\x80\x14\x9d\xc0\x00\x00\xbd\xae\x00\x04\x0c\x00\x00G\x9d\x00\x00\x00\x9d\xa0\x00\x00\x9d\x80\x00\x00\xbd\xac\x00\x04\x0c\x00\x00&\x15\x00\x00\x00\xb8n\x00\x02\xb8\x8d\x00\x02\x18\xa0\x00\x00\xa8\xa5!\x00\xe0cp\x00\x9d`\x00\x04\xb9C\x00\x02\xe1$(\x00\x9c\xe0\x00\x00\xbd\xa7\x00\x04\x0c\x00\x00\x14\x15\x00\x00\x00\xb8l\x00\x02\x18\xc0\x00\x00\xa8\xc6 \x00\xe0c`\x00\xe0\xaa0\x00\xe0c[\x06\x18\xc0\x00\x00\xa8\xc6 d\xe0\x830\x00\x84e\x00\x00\x9c\xe7\x00\x01\x84\xc4\x00\x00\x9c\xa5\x00\x04\xbd\xa7\x00\x04\xe0c3\x06\x9c\x84\x00\x04\x13\xff\xff\xf9\xe1\x08\x18\x00\xd4\t@\x00\x9d\x8c\x00\x01\x9d\x00\x00\x00\xbd\xac\x00\x04\x13\xff\xff\xe6\x9d)\x00\x04\x9d\xce\x00\x01\xbd\xae\x00\x04\x13\xff\xff\xd6\x9d\xad\x00\x05\x9d\xc0\x00\x00\xbd\xae\x00\x04\x0c\x00\x00\x16\x15\x00\x00\x00\x9e\x00\x00\x04\x9d\x80\x00\x00\xbd\xac\x00\x04\x0c\x00\x00\r\xb8n\x00\x02\x18\x80\x00\x00\xa8\x84!\x00\xe0cp\x00\xe0c\x83\x06\xe1C \x00\x84j\x00\x00\x04\x00\x00\x9c\x9d\x8c\x00\x01\xbd\xac\x00\x04\x13\xff\xff\xfc\x9dJ\x00\x04\x9d\xce\x00\x01\xbd\xae\x00\x04\x13\xff\xff\xef\x15\x00\x00\x00\x18`\xde\xad\xa8c\xbe\xef\x04\x00\x00\x91\x15\x00\x00\x00'

print(len(bytes)) # 340 

bits = bin( int.from_bytes(bytes , byteorder = sys.byteorder) )


print(len(bits))  # 2695 ??? 

back2bytes = ( int(bits,2).to_bytes(len(bytes), byteorder = sys.byteorder) )

print(bytes==back2bytes) #True 

Таким образом, размер объекта в байтах равен 340. Хорошо, что означает, что я ожидаю бит переменная длиной (340x8) +2 (+2 из-за символов 0b в начале строки). Что не так. Программа печатает 2695. Почему это происходит?

Также, когда я пытаюсь вернуть байты, все работает нормально ...

...