0

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

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

 int main() {
 ...
 ...
 int64 value = 0;
 bool blah = function1(&value);
 ...
 }

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

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

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

4

2 回答 2

3

看一下struct模块,尤其是在struct.unpack. 你可以做:

value, = unpack("q", string)

“q”表示 64 位有符号整数,字符串只是数字的原始字节表示。请记住,注意字节顺序!

于 2012-07-02T18:55:45.353 回答
1

Single quotes are used for characters, not strings in C++. Should be "\x00\x00\x00\x00*Q \x00". Besides, the code makes little sense in that memory is allocated for pb and then it's overwritten with a constant string.

于 2012-07-02T18:59:58.050 回答