Как то так.Не проверено (до следующего редактирования).Для Python 2.x.Предполагается, что n> 0.
tmp = []
while n:
n, d = divmod(n, 256)
tmp.append(chr(d))
result = ''.join(tmp[::-1])
Редактировать: проверено.
Если вы не читаете руководства, но любите битбэшировать, вместо divmod
caper, попробуйте следующее:
d = n & 0xFF; n >>= 8
Редактировать 2: Если ваши числа относительно малы, следующее может быть быстрее:
result = ''
while n:
result = chr(n & 0xFF) + result
n >>= 8
Редактировать 3: Второй метод не предполагает, что int уже является бигендовым.Вот что происходит в общеизвестно маленькой среде:
Python 2.7 (r27:82525, Jul 4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> n = 65539
>>> result = ''
>>> while n:
... result = chr(n & 0xFF) + result
... n >>= 8
...
>>> result
'\x01\x00\x03'
>>> import sys; sys.byteorder
'little'
>>>