q
длинный, поэтому 64-битные целые числа со знаком.С https://docs.python.org/3/library/struct.html:
Format C Type Python type Standard size
q long long integer 8
Вы можете прочитать этот буфер и скопировать его в массив длиной 2 (64 бита, используя stdint.h
define)
#include <iostream>
#include <strings.h>
#include <stdint.h>
int main()
{
// you're supposed to get that when reading the buffer from a file for instance:
const unsigned char buffer[] = {0xc8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,'{',0x00,0x00,0x00,0x00,0x00,0x00,0x00};
int64_t array[2];
memcpy(array,buffer,sizeof(array));
std::cout << array[0] << "," << array[1] << '\n';
}
отпечатков:
456,123
Я не обращался с порядком байтов здесь.Просто предположил, что они были одинаковыми.Но если вы хотите этого, просто поменяйте местами байты, используя размер шрифта, и все готово.