在Qt中将int转换为QBytearray

and*_*med 1 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;
Run Code Online (Sandbox Code Playgroud)

小智 5

你可以这样做.

int myInt = 123;
QByteArray q_b;
q_b.setNum(myInt);
Run Code Online (Sandbox Code Playgroud)

  • ::number 或 .setNum 将数字转换为字符串,而不是实际值。 (4认同)

Rei*_*ica 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);
}
Run Code Online (Sandbox Code Playgroud)

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