Найти - Пользователи
Полная версия: int to byte
Начало » Python для новичков » int to byte
1
atomAltera
Всем привет :)

Работаю с bytes, map-ю их. Вопрос в том, как сделать так, что-бы в результате арифметических операций, полученное число было-бы в диапазоне ?

Примеры:
230 + 90 = 64
5 - 7 = 254
255 + 1 = 0

в других языках есть функция byte(), а в Python?
boltayka
230 + 90 [b]% 256[/b] = 64
5 - 7 [b]% 256[/b] = 254
255 + 1 [b]% 256[/b] = 0
можно ещё
 def byte(x):
return x % 256
atomAltera
Ок, спасибо
doza_and
еще вариант - numpy.array(,dtype='b') - это лучше если будете работать с массивами байтов
Isem
Для получения младшего байта надо использовать побитовое AND c маской 0xff:
>>> 230+90 & 0xff
>>> 64
>>> 5-7 & 0xff
>>> 254
>>> 255+1 & 255
>>> 0
atomAltera
Isem
Для получения младшего байта надо использовать побитовое AND c маской 0xff:
>>> 230+90 & 0xff
>>> 64
>>> 5-7 & 0xff
>>> 254
>>> 255+1 & 255
>>> 0
наверное это самый лучший вариант. Даже по определению

а вот почему -4 % 256 в пайтоне 252 а на калькуляторе -4 понять не могу. % - это же деление по модулю?
Isem
atomAltera
а вот почему -4 % 256 в пайтоне 252 а на калькуляторе -4 понять не могу. % - это же деление по модулю?
Все дело в представлении числа на выходе. Питон дает беззнаковое число, а калькулятор - знаковое. Другими словами -4 и 252 - это одно и то же если и то и другое представить в виде 8-ми бит: 11111100, только его по разному можно интерпретировать.
Хотя математически будет правильно так, как в калькуляторе.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB