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())
...
璃
我得到一个整数值 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())
...
璃