Преобразование текста ascii в число и обратно в ascii - PullRequest
0 голосов
/ 08 мая 2020

Я создаю код 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...