我插入了一个注册表项,HKEY_LOCAL_MACHINE\SOFTWARE\test\test_qword
,类型为REG_QWORD
,值为20150509091344
(0x1253a7efba10
)。在
然后,我尝试使用winreg
加载它,并使用python3.4中的以下代码:
import winreg
key_dir = r"SOFTWARE\test"
reg = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key_dir, 0,
winreg.KEY_WOW64_64KEY+winreg.KEY_ALL_ACCESS)
test_dir = list(winreg.QueryValueEx(reg, r'test_qword'))[0]
print(test_dir)
ans = "".join(map(lambda b: format(b, "02x"), test_dir))
print(ans)
print(int(ans, 16))
并得到以下控制台输出:
^{pr2}$这不是我原来的价值。如何使用winreg
检索我的原始值?在
您编写的代码将值解释为big-endian存储的整数。但是,^{} is stored as a little-endian number.
有一种更容易转换64位整数的} 。格式
bytes
值的方法:使用^{'<q'
将读取有符号的64位小端整数:如果你想把它读成大端的话:
^{pr2}$你可以看到它给你的错误值是你在你的代码中得到的。在
关于} module.
struct.unpack()
及其逆格式struct.pack()
的更多信息,请参阅the docs for the ^{相关问题 更多 >
编程相关推荐