将 ascii 文本转换为数字并返回 ascii

Converting ascii text to to number and back to ascii

我正在创建一个具有两个功能的 python 代码


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

所以,当我们在第一个函数中使用第二个函数时,它应该返回给我们原始文本。该函数适用于小文本,但当文本大时会出现乱码。我认为 Python 对变量的大小没有限制,只要我们的机器有 space。那么,为什么会这样呢?我该如何解决?

错误输出:

>>> numberToText(textToNumber('Hello world'))
'Hello x\x00\x00\x00d'

使用 // 而不是 / 得到整数除法。 否则你会得到浮点数,它们的精度不如大整数。