Есть метод, который преобразует строку текста, такого как 'you'
к ряду других, чемСтрока текста для уникального целочисленного метода?
y = tuple('you')
for k in y:
k = ord(k)
который только преобразует один символ за один раз?
Есть метод, который преобразует строку текста, такого как 'you'
к ряду других, чемСтрока текста для уникального целочисленного метода?
y = tuple('you')
for k in y:
k = ord(k)
который только преобразует один символ за один раз?
Для того, чтобы преобразовать строку в число (и наоборот), вы должны всегда всегда работать с bytes
. Поскольку вы используете Python 3, строки на самом деле являются строками Unicode и могут содержать символы, которые имеют значение ord()
выше 255. bytes
однако имеют только один байт на символ; поэтому сначала вы должны преобразовать эти два типа.
В принципе, вы ищете способ преобразования строки bytes
(которая в основном представляет собой список байтов, список чисел 0-255) в одно число и обратное. Вы можете использовать int.to_bytes
и int.from_bytes
для этого:
import math
def convertToNumber (s):
return int.from_bytes(s.encode(), 'little')
def convertFromNumber (n):
return n.to_bytes(math.ceil(n.bit_length()/8), 'little').decode()
>>> convertToNumber('foo bar baz')
147948829660780569073512294
>>> x = _
>>> convertFromNumber(x)
'foo bar baz'
k
перезаписывается. Собирать предметы, используя что-то вроде списка понимания:>>> text = 'you'
>>> [ord(ch) for ch in text]
[121, 111, 117]
Чтобы получить текст обратно, используйте chr
и присоединиться символы с помощью str.join
:
>>> numbers = [ord(ch) for ch in text]
>>> ''.join(chr(n) for n in numbers)
'you'
Я искал одно число, а не список чисел, представляющих целое слово. – user4757074
Обработать строку как число базовых 255.
# Reverse the digits to make reconstructing the string more efficient
digits = reversed(ord(b) for b in y.encode())
n = reduce(lambda x, y: x*255 + y, digits)
new_y = ""
while n > 0:
n, b = divmod(n, 255)
new_y += chr(b)
assert y == new_y.decode()
(Обратите внимание, это, по существу, такой же, как ответ тыкать, но написано явно, а не использовать доступные методы для преобразования строки байтов и целое число.)
Вы должны быть в состоянии получить текст обратно после его преобразования. – user4757074
Получите текст обратно из целого числа? Это возможно, но это звучит как [проблема X-Y] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem), чего именно вы пытаетесь достичь? –