Я создаю код python, который имеет две функции:
- textToNumber (t)
- numberToText (n)
Функция textToNumber (t) принимает параметр обычного текста ('Hello world') и преобразует его в очень большое число, рассматривая значения ASCII каждой буквы. Функция выглядит так:
def textToNumber (txt):
text_number = 0
for letter in txt:
text_number = (text_number * 256) + ord(letter)
return text_number
numberToText (n) принимает число и преобразует его в соответствующий ему простой текст. Эта функция прямо противоположна первой функции. Это выглядит так:
def numberToText (nm):
n = nm
number_text = ""
while n > 0:
part_n = int(n) & 255
number_text = chr(part_n) + number_text
n = n - part_n
n = n / 256
return number_text
Итак, когда мы используем вторую функцию внутри первой, она должна вернуть нам исходный текст. Функция отлично работает с мелким текстом, но выдает гиббери sh, когда текст большой. Я думаю, что Python не имеет ограничений на размер переменных, пока на нашей машине есть место. Итак, почему это происходит? Как решить эту проблему?
Вывод ошибки:
>>> numberToText(textToNumber('Hello world'))
'Hello x\x00\x00\x00d'