Python:将Integer转换为UTF16LE

2024-06-16 10:39:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了一个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个字节…)

非常感谢你的帮助

谨致问候


Tags: infolehttp编码字节wwwunicode整数
1条回答
网友
1楼 · 发布于 2024-06-16 10:39:52

首先,要将数字转换为字符,请使用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中,可以在打开文件时指定文件编码:

^{pr2}$

控制台会话显示:

>>> 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())
...
璃

相关问题 更多 >