在實際工作中,涉及到了“數組”與QByteArray的轉化問題,現總結一下。
以int數組為例,代碼如下:
//int數組→QByteArray
unsigned int unArrs[10];
for (int i(0); i<10; i++)
{
unArrs[i] = i * i;
}
QByteArray arrTest;
arrTest.append((char*)unArrs, sizeof(unsigned int) * 10);
//QByteArray→int數組
unsigned unArrTest[10];
for (int i(0); i<10; i++)
{
unsigned int unTemp;
memcpy(&unTemp, arrTest.data() + sizeof(unsigned int) * i, sizeof(unsigned int));
unArrTest[i] = unTemp;
}
從上述示例代碼中,可以發現,對于普通的數組,如果想要轉化為QByteArray,可以直接使用QByteArray的append函數(這裡需要注意,第一個參數需要轉化為char*類型,後面的第二個參數是數組總共所占的位元組數)。
而對于QByteArray轉化為想要的數組,個人建議采用memcpy的方式,因為記憶體的直接拷貝是以位元組為機關的,不需要考慮到大小端序的問題。隻要能定位到你想要的值的位置,就可以拷貝過來。
上述代碼是以int類型的數組為例的,對于其他類型的數組,同樣可以采用這種方式,隻需要更改一下每次添加的大小,或者是每次偏移的大小即可。