将C++ to memcpy uchar 翻译成 int64

Translating C++ to memcpy uchar into int64

本文关键字:翻译 int64 uchar memcpy C++ to      更新时间:2023-10-16

好吧,我正在复制一些需要在我的服务器(Python)上运行的代码(C++),一切都很顺利,直到下面的位。

简而言之,这是我在C++程序中拥有的内容:

 int main() {
 ...
 ...
 int64 value = 0;
 bool blah = function1(&value);
 ...
 }
 bool function1(int64* value)
 {
 ...
 uchar pb[8];
 pb = 'x00x00x00x00*Q x00'; 
 memcpy(value,pb,8);
 //now value has the value '0x7fff33516970'
 }

所以是的,它会创建一些 char 数组,然后将值复制到 int64 中。

现在我的问题是:如何在 Python 中做到这一点?我的意思是,我有相当于 pb 的字节串,但我不知道从那里开始(特别是因为有所有这些零......

看看struct模块,尤其是struct.unpack。你可以做:

value, = unpack("q", string)

"q"表示 64 位有符号整数,字符串只是数字的原始字节表示形式。记住,小心字节序!

引号用于字符,而不是C++中的字符串。应该"x00x00x00x00*Q x00".此外,代码几乎没有意义,因为内存是为pb分配的,然后用常量字符串覆盖。