我目前正在尝试找到一种将任何类型的文本转换为数字的方法,以便稍后可以将其转换回文本。 所以像这样:
text = "some string"
number = somefunction(text)
text = someotherfunction(number)
print(text) #output "some string"
请您参考如下方法:
如果您使用的是 Python 3,那将非常简单。首先,将 str 转换为所选编码的 bytes(utf-8 通常是合适的),然后使用 int.from_bytes 转换为 int:
number = int.from_bytes(mystring.encode('utf-8'), 'little')
转换回来有点棘手(并且会丢失尾随的 NUL 字节,除非你已经存储了结果字符串应该在其他地方的长度;如果你切换到 'big' 字节顺序,你丢失了前导 NUL 字节而不是尾随):
recoveredstring = number.to_bytes((number.bit_length() + 7) // 8, 'little').decode('utf-8')
您可以在 Python 2 中执行类似的操作,但效率/直接性较低:
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')
这相当于 Python 3 中的 'big' endian 方法;在每个方向上反转中间字节将获得 'little' 效果。
