Unicode、字节和字符串到整数的转换

Unicode, Bytes, and String to Integer Conversion

我正在编写一个处理外国字母表中字母的程序。该程序正在输入与字符的 unicode 编号相关联的数字。例如 062A 是在 unicode 中为该字符分配的数字。

我首先要求用户输入一个对应于特定字母的数字,即 062A。我现在正试图将该数字转换为 16 位整数,可以通过 python 解码以将字符打印回用户。

示例:

对于 \u0394

打印(字节([0x94, 0x03]).解码('utf-16'))

然而当我使用

int('062A', '16')

我收到此错误:

ValueError:以 10 为底的 int() 的无效文字:'062A'

我知道这是因为我在字符串中使用了 A,但这是符号的 unicode。谁能帮帮我?

however when I am using int('062A', '16'), I receive this error: ValueError: invalid literal for int() with base 10: '062A'

不,你不是:

>>> int('062A', '16')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object cannot be interpreted as an integer

正如它所说的那样。问题不是 '062A',而是 '16'。基数应该直接指定为整数,而不是字符串:

>>> int('062A', 16)
1578

如果要得到对应编号的Unicode码位,那么通过bytes和UTF-16转换就太麻烦了。直接用chr询问即可,例如:

>>> chr(int('0394', 16))
'Δ'