问题: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

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐