如何将字符串转换为小端格式的“04x”十六进制?
How to convert a string to "04x" hex in little endian format?
当我将字符串转换为 04x 十六进制时,它会像这样,
"".join("{:04x}".format(ord(c)) for c in "USERDOMAIN")
==> 00550053004500520044004f004d00410049004e
但是我需要它的小端格式吗?在这个例子中
==> 550053004500520044004f004d00410049004e00
我应该如何计算 python 中的这个值(我的意思是 USERDOMAIN 04x 十六进制的小端格式)?
如果您尝试编码为 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。
当我将字符串转换为 04x 十六进制时,它会像这样,
"".join("{:04x}".format(ord(c)) for c in "USERDOMAIN")
==> 00550053004500520044004f004d00410049004e
但是我需要它的小端格式吗?在这个例子中
==> 550053004500520044004f004d00410049004e00
我应该如何计算 python 中的这个值(我的意思是 USERDOMAIN 04x 十六进制的小端格式)?
如果您尝试编码为 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。