我目前正在尝试找到一种方法将任何类型的文本转换为数字,以便以后可以将其转换回文本。 所以像这样:
text = "some string"
number = somefunction(text)
text = someotherfunction(number)
print(text) #output "some string"
答案 0 :(得分:4)
如果您使用的是Python 3,那就非常简单了。首先,将str
转换为bytes
所选的编码(utf-8
通常是合适的),然后使用int.from_bytes
转换为int
:
number = int.from_bytes(mystring.encode('utf-8'), 'little')
转换回来有点棘手(并且会丢失尾随NUL
个字节,除非你已经存储了生成的字符串应该在其他地方的多长时间;如果你切换到'big'
字节序,你将丢失前导{{ 1}}字节而不是尾随):
NUL
你可以在Python 2中做类似的事情,但效率不高/直接:
recoveredstring = number.to_bytes((number.bit_length() + 7) // 8, 'little').decode('utf-8')
这相当于Python 3中的import binascii
number = int(binascii.hexlify(mystring.encode('utf-8')), 16)
hx = '%x' % number
hx = hx.zfill(len(hx) + (len(hx) & 1)) # Make even length hex nibbles
recoveredstring = binascii.unhexlify(hx).decode('utf-8')
endian方法;在每个方向上反转中间字节会得到'big'
效果。
答案 1 :(得分:1)
您可以使用ASCII值执行此操作:
ASCII到int:
item
回到字符串:
ord('a') # = 97
从那里你可以一次迭代字符串一个字符并将它们存储在另一个字符串中。假设您使用的是标准ASCII字符,则需要对数字进行填零(因为有些是两位数,有些是三位数),如下所示:
str(unichr(97)) # = 'a'
要对此进行解码,您将一次读取三个字符的新字符串并将其解码为新字符串。
这假设了一些事情: