Skip to main content
 首页 » 编程设计

Python 将非数字字符串存储为数字

2025年05月04日45youxin

我目前正在尝试找到一种将任何类型的文本转换为数字的方法,以便稍后可以将其转换回文本。 所以像这样:

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' 效果。