Qt 6.2.1 MinGW
我有 2 個陣列, headerFirstArray
和 body SecondArray
。我知道復制粘貼不擅長編程,所以一開始就這樣做了:
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
const QByteArray FirstArray=QByteArray(std::begin<char>({static_cast<char>(0xA5), 0x5A, static_cast<char>(0xB5), 0x5B}), 4);
const QByteArray SecondArray=QByteArray(FirstArray std::begin<char>({0x18, 0x00, 0x01, static_cast<char>(0x9B), 0x03, 0x09, 0x00, 0x19, static_cast<char>(0x91)}), 13);
qDebug()<< SecondArray.toHex();
return a.exec();
}
我期待的結果:
"a55ab55b1800019b0309001991"
但在輸出中我看到:
"a55ab55b1800adbaababababab"
然后我重寫了第二次QByteArray
初始化,并在建構式中洗掉了加號操作:
const QByteArray SecondArray=QByteArray(std::begin<char>({static_cast<char>(0xA5), 0x5A, static_cast<char>(0xB5), 0x5B, 0x18, 0x00, 0x01, static_cast<char>(0x9B), 0x03, 0x09, 0x00, 0x19, static_cast<char>(0x91)}), 13);
我得到:
"a55ab55b1800019b0309001991"
為什么會在第一種情況下發生?如何正確書寫?
uj5u.com熱心網友回復:
正如評論中提到的,你正在打電話
const QByteArray operator (const QByteArray &a1, const char *a2)
其中,根據其檔案:
回傳一個位元組陣列,它是連接位元組陣列 a1 和字串 a2 的結果。
它a2
指向一個以空字符結尾的字串除外。
您可以將串聯重新排列為
FirstArray QByteArray(std::begin<char>({0x18, ......
呼叫不依賴于 c 字串的空終止的其他多載。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/389654.html
下一篇:轉發參考:參考引數來源