将 ascii 文本转换为数字并返回 ascii
Converting ascii text to to number and back to ascii
我正在创建一个具有两个功能的 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
所以,当我们在第一个函数中使用第二个函数时,它应该返回给我们原始文本。该函数适用于小文本,但当文本大时会出现乱码。我认为 Python 对变量的大小没有限制,只要我们的机器有 space。那么,为什么会这样呢?我该如何解决?
错误输出:
>>> numberToText(textToNumber('Hello world'))
'Hello x\x00\x00\x00d'
使用 //
而不是 /
得到整数除法。
否则你会得到浮点数,它们的精度不如大整数。
我正在创建一个具有两个功能的 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
所以,当我们在第一个函数中使用第二个函数时,它应该返回给我们原始文本。该函数适用于小文本,但当文本大时会出现乱码。我认为 Python 对变量的大小没有限制,只要我们的机器有 space。那么,为什么会这样呢?我该如何解决?
错误输出:
>>> numberToText(textToNumber('Hello world'))
'Hello x\x00\x00\x00d'
使用 //
而不是 /
得到整数除法。
否则你会得到浮点数,它们的精度不如大整数。