Я не совсем уверен, что вы хотите, но вы смотрели на struct
модуль?
С учетом
>>> hex(123456789)
'0x75bcd15'
Вы можете сделать:
>>> struct.pack('i', 123456789)
'\x15\xcd[\x07'
Обратите внимание, что '\x5b' == '['
.
Кроме того, вы можете обратить вспять порядок байтов:
>>> struct.pack('>i', 123456789)
'\x07[\xcd\x15'
Редактировать: Я не уверен, что вы подразумеваете под "больше, чем длинная", поскольку лонг AFAIK в python не ограничен (кроме памяти) Тем не менее, вы можете иметь дело с большими целыми числами, просто разделив и объединив. например Дано:
>>> n = 123456789012345678901234567890
цель:
>>> hex(n)
'0x18ee90ff6c373e0ee4e3f0ad2L'
Итак:
>>> s = ''
>>> while n >= 2**32:
... n, r = divmod(n, 2**32)
... s = struct.pack('>l', r) + s
...
>>> s = struct.pack('>l', n) + s
Обратите внимание, что s
соответствует результату hex(n)
выше:
>>> s
'\x00\x00\x00\x01\x8e\xe9\x0f\xf6\xc3s\xe0\xeeN?\n\xd2'