【问题标题】:convert an int to QByteArray in Qt在 Qt 中将 int 转换为 QByteArray
【发布时间】:2016-08-14 04:14:23
【问题描述】:

我正在尝试将 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;

【问题讨论】:

标签: c++ qt


【解决方案1】:

与实际问题标题相关,下面的静态函数肯定可以工作:

QByteArray::number

【讨论】:

    【解决方案2】:

    你可以这样做。

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

    【讨论】:

    • ::number 或 .setNum 将数字转为字符串,而不是实际值。
    【解决方案3】:

    数组不为零,您的代码工作正常:

    #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);
    }
    

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

    【讨论】:

      【解决方案4】:

      我标记为重复,因为您可以进行更好的搜索(说真的,有很多这样的问题)。无论如何,这是最简单的解决方案:

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

      【讨论】:

      • 它是一个布尔变量
      • 正在检查 m_htman 是否为真,我将字节数组设置为结果字节数组
      • 你可以像现在一样使用 ::number() 但问题是你不能处理大数
      猜你喜欢
      • 2017-06-16
      • 1970-01-01
      • 2017-12-13
      • 2014-12-23
      • 1970-01-01
      • 2019-04-25
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多