Ошибка преобразования Python int в байты с некоторыми значениями

#python

#python

Вопрос:

Я использую метод int.to_bytes в Python для преобразования целочисленных значений в байты.

При определенных значениях это, похоже, не удается. Прилагается вывод из консоли Python:

 value = 2050
value.to_bytes(2, 'big')
>>> b'x08x02'
value = 2082
value.to_bytes(2, 'big')
>>> b'x08"'
  

При значении 2050 преобразование кажется правильным. Но когда значение равно 2082 , по какой-то причине извлекается только верхний байт. Есть какая-либо причина, почему это происходит?

Комментарии:

1. К сожалению, понял это сейчас…

2. Но это именно то, как bytes реализованы str и repr. Это правильные значения и работает. Просто положите немного ленты на монитор, чтобы вам не приходилось ее видеть.

3. Ха-ха, попробовал бы.

Ответ №1:

Он извлекает все байты. Попробуйте

 value = 2082
x = value.to_bytes(2, 'big')
print(x[0]) # Output: 8
print(x[1]) # Output: 34
  

При преобразовании в строку байт 34 преобразуется в ASCII " , что вы и видите.