Python: 将整数转换为 UTF16-LE

Python: Convert Integer to UTF16-LE

我得到一个整数值 29.827,我想将其转换为具有 UTF-16-LE 编码的 Unicode 汉字 'glass' (U+7483)(参见 http://www.fileformat.info/info/unicode/char/7483/index.htm)。

我设法将这个数字转换为 3 字节的 UTF-8 编码(超过 2048 的整数在 UTF-8 中有 3 个字节......)

s ='\u%s'%hex(int_to_encode)[2:]
file.write(s.decode('unicode-escape').encode('utf-8'))
file.close()

但我发现所需的编码是 UTF-16-LE。 在预期的编码中,整数表示也有 3 个字节(这就是为什么我认为我的第一次尝试是正确的,一个整数也有 3 个字节...)

非常感谢您的帮助,

亲切的问候

首先要将数字转换为字符,请使用 chr() (Python3) 或 unichr() (Python2)。然后使用 UTF-16-LE 进行编码,您只需指定该编码而不是指定 UTF-8。

所以 Python 2:

int_to_encode = 0x7483
s = unichr(int_to_encode)
file.write(s.encode('utf-16-le'))
file.close()

在Python 2 或Python 3 中您可以指定打开文件时的文件编码:

import io
s = unichr(0x7483)
with io.open('foo', 'w', encoding='utf-16-le') as f:
    f.write(s)

控制台会话显示:

>>> with io.open('foo', 'w', encoding='utf-16-le') as f:
...     f.write(unichr(0x7483))
...
1L
>>> with io.open('foo', 'r', encoding='utf-16-le') as f:
...     print(f.read())
...
璃