Python3将Unicode字符串转换为int表示形式
众所周知,计算机可以处理数字。我现在正在输入此文本,服务器从中输入一个数字,当您要阅读该文本时,将从服务器中获取文本。
我怎么能自己做?
我想用自己的算法加密某些东西,而我的算法可以很好地处理整数,但是现在我想加密一个字符串,而且我不知道如何将Unicode字符串转换为整数,反之亦然。
我正在使用Python3。有人知道我的问题的解决方案吗?
-
您正在寻找的
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) 'Á'
请注意,在加密最终解密文本时, 通常会将 文本编码为带有
字符编码
的二进制表示形式。Unicode文本可以使用具有不同优点和缺点的不同编码进行编码。这些天来,最普遍使用的Unicode文本UTF-8编码,但也有一些。在Python
3中,二进制数据表示在bytes
对象中,您可以使用str.encode()
方法将文本编码为字节,然后使用进行返回bytes.decode()
:>>> '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知识
- 内德·巴切尔德的实用Unicode
- Python的Unicode HOWTO