在Qt中将int转换为QBytearray

时间:2016-04-21 06:38:02

标签: c++ qt

我正在尝试将int转换为QBytearray。我正在使用这个方法QByteArray :: number(m_vman); 这是对的吗?

我正在尝试使用number()来获取QBytearray的int

我正在尝试以下代码,但bytearray为零

    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;

4 个答案:

答案 0 :(得分:5)

你可以这样做。

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

答案 1 :(得分:2)

与实际问题标题相关,以下静态函数应该可以正常工作:

QByteArray::number

答案 2 :(得分:1)

我标记为重复,因为你可以更好地搜索(严肃地说,有十几个这样的问题)。无论如何,这是最简单的解决方案:

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

答案 3 :(得分: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);
}

如果存储在其中的值为零,则可能为“零”,但这是正确的。