Python3将Unicode字符串转换为int表示[关闭]
·
问题:Python3将Unicode字符串转换为int表示[关闭]
众所周知,计算机处理数字。我现在正在输入此文本,服务器从中生成一个数字,当您想阅读它时,您将从服务器获取文本。
我怎么能自己做到这一点?
我想用我自己的算法加密一些东西,我的算法适用于整数,但现在我想加密一个字符串,但我不知道如何将 Unicode 字符串转换为整数,反之亦然。
我正在使用 Python 3。有没有人知道我的问题的优雅解决方案?
解答
您正在寻找ord()
函数,我认为:
>>> ord('a')
97
>>> ord('\u00c2')
192
这为您提供了 Unicode 代码点的整数。
要转换一整套字符,请使用列表推导:
>>> [ord(c) for c in 'Hello World!']
[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]
它的逆是chr()
函数:
>>> chr(97)
'a'
>>> chr(193)
'Á'
请注意,当您加密结束解密文本时,您_通常_将文本编码为具有character encoding的二进制表示。 Unicode 文本可以用不同的编码进行编码,具有不同的优点和缺点。这些天最常用的 Unicode 文本编码UTF-8,但其他存在。
在 Python 3 中,二进制数据在bytes
对象中表示,您可以使用str.encode()
方法将文本编码为字节,然后使用[bytes.decode()
zwz104020bytes.decode()
zwz104006返回
>>> 'Hello World!'.encode('utf8')
b'Hello World!'
>>> b'Hello World!'.decode('utf8')
'Hello World!'
bytes
值实际上只是序列,如列表、元组和字符串,但由 0-255 的整数组成:
>>> list('Hello World!'.encode('utf8'))
[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]
就个人而言,在加密时,您希望对生成的字节进行编码和加密。
如果这一切看起来势不可挡或难以理解,也许这些关于 Unicode 和字符编码的文章可以提供帮助:
-
每个开发人员需要了解的关于 Unicode 的知识
-
Ned Batchelder 的实用 Unicode
-
Python 的Unicode HOWTO
更多推荐
所有评论(0)