Целое число в уникальную строку - PullRequest
0 голосов
/ 05 ноября 2010

Возможно, есть еще кто-то, кто задавал подобный вопрос, но я не потратил много времени на его поиск, поэтому просто укажите мне, если кто-то уже ответил на это.

Я пытаюсь ответитьцелое число (или длинное) и превращение его в строку очень специфическим способом.

Цель состоит в том, чтобы по существу разбить целое число на 8-битные сегменты, затем взять каждый из этих сегментов и получить соответствующий ASCIIсимвол для этого чанка, затем склейте чанки.

Это легко реализовать, но я не уверен, что сделаю это наиболее эффективным способом.

>>> def stringify(integer):
        output = ""
        part = integer & 255
        while integer != 0:
                output += chr(part)
                integer = integer >> 8
        return output
>>> stringify(10)
'\n'
>>> stringify(10 << 8 | 10)
'\n\n'
>>> stringify(32)
' '

Есть ли более эффективный способ сделать это?Это встроено в Python?

РЕДАКТИРОВАТЬ:

Кроме того, поскольку это будет выполняться последовательно в узком цикле, есть ли способ упростить его для такого использования?

>>> for n in xrange(1000):  ## EXAMPLE!
        print stringify(n)
...

1 Ответ

3 голосов
/ 05 ноября 2010

struct может легко сделать это для целых чисел размером до 64 бит. Любой крупный потребует, чтобы вы сначала вырезали номер.

>>> struct.pack('>Q', 12345678901234567890)
'\xabT\xa9\x8c\xeb\x1f\n\xd2'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...