Python 如何从 unicode 字符串中获取空填充字节字符串
Python how to get null padded byte string from unicode string
我确定有人应该能够在这里帮助我,因为它感觉就像一个如此简单的答案,但我无法在任何地方找到它。我需要编写一个 unicode 字符串(基本上是空填充的 ascii),但它没有按预期工作,无论我从互联网上尝试什么,它最终都是纯 ascii。
with open('test.txt', 'wb') as oFile:
name = u'AAA'
oFile.write(name) //always writing 0x414141 i want 0x410041004100
澄清一下,虽然问题已经得到解答,但万一有人在这里徘徊,用例是它是一个混合二进制文件(这里是一个 int,那里是一个 unicode 字符串,一个结构等),我是到位编辑。我真的只是希望能够按照文件中表示的方式编写字符串('AAA' 作为 0x410041004100 而不是 0x414141)
您可以将 .encode()
方法与适当的编解码器一起使用:
>>> name = u"aaa"
>>> name.encode("utf_16")
'\xff\xfea\x00a\x00a\x00'
开头的\xff\xfe
是一个Byte Order Mark (BOM)。您的应用程序可能需要也可能不需要,如果不需要,您可以将其删除。
打开文件时可以使用codecs
模块指定编码:
import codecs
with codecs.open('test.txt', 'wb', encoding='utf-16') as oFile:
...
更多信息:
我确定有人应该能够在这里帮助我,因为它感觉就像一个如此简单的答案,但我无法在任何地方找到它。我需要编写一个 unicode 字符串(基本上是空填充的 ascii),但它没有按预期工作,无论我从互联网上尝试什么,它最终都是纯 ascii。
with open('test.txt', 'wb') as oFile:
name = u'AAA'
oFile.write(name) //always writing 0x414141 i want 0x410041004100
澄清一下,虽然问题已经得到解答,但万一有人在这里徘徊,用例是它是一个混合二进制文件(这里是一个 int,那里是一个 unicode 字符串,一个结构等),我是到位编辑。我真的只是希望能够按照文件中表示的方式编写字符串('AAA' 作为 0x410041004100 而不是 0x414141)
您可以将 .encode()
方法与适当的编解码器一起使用:
>>> name = u"aaa"
>>> name.encode("utf_16")
'\xff\xfea\x00a\x00a\x00'
开头的\xff\xfe
是一个Byte Order Mark (BOM)。您的应用程序可能需要也可能不需要,如果不需要,您可以将其删除。
打开文件时可以使用codecs
模块指定编码:
import codecs
with codecs.open('test.txt', 'wb', encoding='utf-16') as oFile:
...
更多信息: