我有一個名爲QbyteArray
"B2"
,增加數到的QByteArray
,我想加入這個2字節的數字,如300
。
,但是當我這樣做mybyte.size()
成爲3byte!!!!
我的代碼是:
我想把它變成2字節。
QByteArray B2;
short int myint;
myint=300;
B2.setNum(myint);
qDebug()<<B2[0]<<B2.size();
,這是我的輸出:
3 3
我有一個名爲QbyteArray
"B2"
,增加數到的QByteArray
,我想加入這個2字節的數字,如300
。
,但是當我這樣做mybyte.size()
成爲3byte!!!!
我的代碼是:
我想把它變成2字節。
QByteArray B2;
short int myint;
myint=300;
B2.setNum(myint);
qDebug()<<B2[0]<<B2.size();
,這是我的輸出:
3 3
如documentation解釋:
的QByteArray :: setNum()字節數組設置爲n的印刷值在基本數據庫中(默認爲10)並返回對字節數組的引用。基數可以是2到36之間的任何值。
很明顯,它給了你一個3的大小,因爲你設置了一個3字節的數組。
for (int i = 0; i < 2; i++) {
B2.append(myint >> (i * 8));
}
如果你正在嘗試添加一個短值(2個字節),你能做到這一點
B2.append((char)((myint & 0xFF00) >> 8));
B2.append((char)(myint & 0x00FF));
這將追加在大端爲了短期價值
好吧,但我想有一個QbyteArray,其中字節1和字節2爲2Byte數字,字節3爲字節n爲另一個數據,現在如果我們這樣做,如果我的數字是2,那麼我的QbyteArray將失去他的形式? !你明白嗎?我說的? –
我能做些什麼來修復每個數字(0-511)到我的Qbytearray的字節0和字節1? –
你必須「變換」你的int在字節數組中。看看這個問題:http://stackoverflow.com/questions/5585532/c-int-to-byte-array –