如何将字符串转换为小端格式的“04x”十六进制?

时间:2015-09-03 08:49:32

标签: python python-2.7 endianness

当我在04x hex中转换一个字符串时,它将是这样的,

"".join("{:04x}".format(ord(c)) for c in "USERDOMAIN")
==> 00550053004500520044004f004d00410049004e

但是我需要小端格式吗?在这个例子中

==> 550053004500520044004f004d00410049004e00

如何在python中计算这个值(我的意思是USERDOMAIN 04x hex的小端格式)?

1 个答案:

答案 0 :(得分:1)

如果您尝试编码为UTF16字节,请执行以下操作:

u'USERDOMAIN'.encode('utf-16-le')

编码为UTF-16,小端,没有字节顺序标记:

>>> u'USERDOMAIN'.encode('utf-16-le')
'U\x00S\x00E\x00R\x00D\x00O\x00M\x00A\x00I\x00N\x00'
>>> u'USERDOMAIN'.encode('utf-16-le').encode('hex')
'550053004500520044004f004d00410049004e00'

请注意,我通过在字符串定义前添加u前缀来创建 Unicode文字。如果您有来自其他源的字节串,则必须首先解码为Unicode,除非该数据仅为ASCII。