我正在尝试解码从进程地址获取的字节数据。我知道使用第三方软件字节地址的值是什么。我将字节数据检索到缓冲区(c_char_p
中的ctypes
类型)。
然后使用buffer.value.decode()
当我希望获得值9000时,我得到(#
。我将值(使用第三方软件)更改为2000.一旦我这样做,我收到错误< / p>
UnicodeDecodeError: 'utf-8' can't decode byte 0xd0 in position 0: invalid continuation byte
在我看来,UTF-8是错误的编码,或者我做错了什么。我尝试将其解码为Latin-1,但这也不成功。有什么建议吗?
答案 0 :(得分:1)
'\ xd0 \ x07'是2000的小端表示法。
>>> import ctypes
>>> ptr = ctypes.c_char_p(b'\xd0\x07')
>>> val = ctypes.c_int()
>>> ctypes.memmove(ctypes.byref(val),ptr,ctypes.sizeof(val))
>>> val.value
2000