LINUX.ORG.RU

Python, байтовое представление числа

 


0

2

Захотелось мне тут с байтами поиграться на питоне. Сделал

>>> x = 255
>>> x.to_bytes((x.bit_length() // 8) + 1, byteorder='big')
b'\x00\xff'
>>> x = 35
>>> x.to_bytes((x.bit_length() // 8) + 1, byteorder='big')                                                 
b'#'
>>> x = 99
>>> x.to_bytes((x.bit_length() // 8) + 1, byteorder='big')
b'c'
WTF? Почему он для валидного кода из ascii отображает соответствующий символ, а не то, что надо?

Тип bytes всегда так отображался. если хочешь в шестнадцатеричном виде, у него есть метод .hex():

>>> x = 687634
>>> x.to_bytes((x.bit_length() // 8) + 1, byteorder='big').hex()
'0a7e12'

Psych218 ★★★★★
()
>>> x = 255
>>> x.to_bytes((x.bit_length() // 8) + 1, byteorder='big')
b'\x00\xff'


возвращает строку байтов, представляющих это число.
А что-бы он возвращал число надо как то так

[quote][quote][quote] x = 255[br] x.to_bytes((b'\x00\xff' // 8) + 1, byteorder='big')[br][/quote][/quote][/quote]


Наверное.

gssomi ★★
()
Ответ на: комментарий от dimon555

repr и str есть разница

Да, точно, запамятовал про этот момент.

HerrWeigel ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.