bullitufa
@bullitufa
электронщик программист (микроконтроллеры и PC)

Как в Python «красиво/правильно» преобразовать «число» в байты и обратно?

Здравствуйте!

Необходимо преобразовать (по сути получить raw) число в байт(ы). В какой тип преобразовывать указывается через код типа, например так:
class DataType(Enum):
    undef = -1
    u8 = 1
    u16 = 2
    u32 = 3
    u64 = 4
    i8 = 5
    i16 = 6
    i32 = 7
    i64 = 8
    real32 = 9
    real64 = 10
    boolean = 11


Таким образом: получить для чисел -1 / 1 следующие байты:
i8 = 0xff / 0x01
i32 = 0xff 0xff 0xff 0xff / 0x00 0x00 0x00 0x01
u8 = 0xff / 0x01

А число 3.14159012
real32 (float) как 0xd0 0x0f 0x49 0x40

И на оборот!
  • Вопрос задан
  • 894 просмотра
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Для целых можно так (число должно быть неотрицательным):

(1).to_bytes(2, byteorder='little')
(-1+2**16).to_bytes(2, byteorder='little')

Для произвольных следует использовать struct.pack

struct.pack("i", -1)
struct.pack("f", math.pi)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы