2012-12-13 37 views
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 

回答

3

documentation解釋:

的QByteArray :: setNum()字節數組設置爲n的印刷值在基本數據庫中(默認爲10)並返回對字節數組的引用。基數可以是2到36之間的任何值。

很明顯,它給了你一個3的大小,因爲你設置了一個3字節的數組。

更新

for (int i = 0; i < 2; i++) { 
    B2.append(myint >> (i * 8)); 
} 
+0

好吧,但我想有一個QbyteArray,其中字節1和字節2爲2Byte數字,字節3爲字節n爲另一個數據,現在如果我們這樣做,如果我的數字是2,那麼我的QbyteArray將失去他的形式? !你明白嗎?我說的? –

+0

我能做些什麼來修復每個數字(0-511)到我的Qbytearray的字節0和字節1? –

+0

你必須「變換」你的int在字節數組中。看看這個問題:http://stackoverflow.com/questions/5585532/c-int-to-byte-array –

0

如果你正在嘗試添加一個短值(2個字節),你能做到這一點

B2.append((char)((myint & 0xFF00) >> 8)); 
B2.append((char)(myint & 0x00FF)); 

這將追加在大端爲了短期價值