buf[0] = 0x0e;buf[1] =0x02;
quint16 n = (quint16)buf[1];
C++ (Qt)quint16 n = *(reinterpret_cast<quint16 *>(buf));
C++ (Qt)#pragma pack(push, 1)struct CTest { char ch; char buf[128];};#pragma pack(pop)...CTest test;quint16 * dst = (quint16 *) &test.buf[0];*dst = 5;qDebug() << dst << *dst;
CTest test;quint16 * dst = (quint16 *) &test.buf[0];//допустим buf - нечетный алдрес и выравнивание к 4.*dst = 5; // если buf на нечетном адресе, то тут ловим ошибку... пишется куданить в сторону. допустим записали в адрес buf-1qDebug() << dst << *dst; //тут опять ловим ошибку.... опять обращение в сторону и читаем не из адреса buf, а из адреса buf-1
#pragma pack(push, 1)char buf[128] = {0};#pragma pack(pop)...buf[1] = 0x34;buf[2] = 0x12;quint16 *dst = (quint16 *) &buf[1];cout << "dst = " << *dst << endl;*dst = 0xABCD;cout << "buf[1] = " << buf[1] << "\tbuf[2] = " << buf[2] << endl;
C++ (Qt)#pragma pack(push, 1)char buf[128] = {0};#pragma pack(pop) buf[1] = 0x34;buf[2] = 0x12;quint16 *dst = (quint16 *) &buf[1];printf("dst = 0x%x\n", (int) *dst);*dst = 0xABCD;printf("dst = 0x%x\n", (int) *dst);
*dst = 0xABCD;printf("dst = 0x%x\n", (int) *dst);
quint16 n = *(reinterpret_cast<quint16 *>(buf));
C++ (Qt)struct CTest { char ch; quint16 val;}; CTest test;... quint16 n = *(reinterpret_cast<quint16 *> (&test.ch + 1);