You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python3中正确转换Windows注册表SAM的十六进制编码字节为字符串

解决方法:使用对应编码格式解码

你碰到的这个字节序列其实是**UTF-16LE(小端序UTF-16)**编码的字符串,每个可见字符后面跟着的\x00空字节,正是UTF-16LE编码ASCII字符的典型特征——这类字符会用两个字节表示,高字节补0。

直接用对应编码解码就能精准得到目标字符串,完全不需要取巧操作:

b = b'A\x00d\x00m\x00i\x00n\x00i\x00s\x00t\x00r\x00a\x00t\x00o\x00r\x00'
result = b.decode('utf-16le')
print(result)  # 输出: Administrator

为什么这个方法靠谱?

Windows注册表中的字符串普遍采用UTF-16LE编码存储,这是微软系统的标准规范。你的字节对象里,每一组[字符字节+\x00]的组合,刚好对应UTF-16LE编码下的单个ASCII字符。用utf-16le解码时,Python会自动将每两个字节解析为一个Unicode字符,完美还原原始的"Administrator"字符串。

要是你暂时拿不准编码,也可以尝试utf-16(不带le后缀),不过因为你的字节序列没有BOM(字节顺序标记),明确指定utf-16le会更稳妥,毕竟你已经观察到了小端序的特征。

内容的提问来源于stack exchange,提问作者jalu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:45:00