2016-04-21 155 views
1

我試圖將一個int轉換爲QBytearray。我使用這種方法QByteArray :: number(m_vman); 是正確的嗎?將一個int轉換爲Qt中的QBytearray

我試圖用數()用於獲取一個int到的QByteArray

我想下面的代碼,但該字節組是零

QByteArray vmanByteArray, vheaterByteArray; 
    QDataStream streamVMan(&vmanByteArray, QIODevice::WriteOnly); 
    QDataStream streamVHeater(&vheaterByteArray, QIODevice::WriteOnly); 

    streamVMan << m_vman; 
    streamVHeater << m_vheater; 

QByteArray arr = m_htman ? vmanByteArray : vheaterByteArray; 
+0

[只用4個字節存儲整數的QByteArray]的可能的複製(HTTP://計算器。 COM /問題/ 13668827 /存儲整數到QByteArray中,使用僅-4字節) – IAmInPLS

+0

你的代碼工作。這個問題是這樣的話題。你甚至還沒有費心去檢查,如果你自己的代碼工作:( –

回答

0

該數組是不爲零,你的代碼工作正常:

#include <QtCore> 

QByteArray test(bool m_htman) { 
    int m_vman = 1; 
    int m_vheater = 2; 
    QByteArray vmanByteArray, vheaterByteArray; 
    QDataStream streamVMan(&vmanByteArray, QIODevice::WriteOnly); 
    QDataStream streamVHeater(&vheaterByteArray, QIODevice::WriteOnly); 

    streamVMan << m_vman; 
    streamVHeater << m_vheater; 

    QByteArray arr=m_htman ? vmanByteArray: vheaterByteArray; 
    return arr; 
} 

int main() { 
    auto one = QByteArray() + '\0' + '\0' + '\0' + '\1'; 
    auto two = QByteArray() + '\0' + '\0' + '\0' + '\2'; 
    Q_ASSERT(test(true) == one); 
    Q_ASSERT(test(false) == two); 
} 

這可能是「零」,如果存儲在它的值是零,但是對的。

0

我標記爲,因爲你重複本可以搜索得更好(嚴重的是,有十幾個這樣的問題)。無論如何,這是最簡單的解決方案:

int myInt; 
QByteArray bA; 
QDataStream stream(&bA, QIODevice::WriteOnly); 
stream << myInt; 
+0

看看更新請,它不工作 – andreahmed

+0

什麼是'm_htman'? – IAmInPLS

+0

其布爾變量 – andreahmed

3

,你可以簡單地做這樣的。

int myInt = 123; 
QByteArray q_b; 
q_b.setNum(myInt);