【问题标题】:adding number to a QByteArray将数字添加到 QByteArray
【发布时间】:2012-12-01 02:50:17
【问题描述】:

我有一个名为 "B2"QbyteArray

我想添加一个 2 字节的数字,例如 300

但是当我这样做时,mybyte.size() 变成了3byte!!!!

我的代码是:

我想让它变成 2byte。

    QByteArray B2;
        short int myint;
        myint=300;
        B2.setNum(myint);
qDebug()<<B2[0]<<B2.size();

这是我的输出:

3 3 

【问题讨论】:

    标签: c++ qt short qbytearray


    【解决方案1】:

    documentation中所述:

    QByteArray::setNum() 将字节数组设置为以基数为基数的 n 的打印值(默认为 10)并返回对字节数组的引用。基数可以是 2 到 36 之间的任何值。

    很明显,它给你一个 3 的大小,因为你设置了一个 3 字节的数组。

    更新

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

    【讨论】:

    • 好的,但我想要一个 QbyteArray,字节 1 和字节 2 用于 2Byte 数字,而 Byte3 到字节 n 用于另一个数据,现在如果我们这样做,如果我的数字是 2,那么我的QbyteArray会失去他的形式吗? !你明白吗?我说什么?
    • 如何将每个数字 (0-511) 固定为我的 Qbytearray 的字节 0 和字节 1?
    • 你必须在字节数组中“转换”你的 int。看看这个问题:stackoverflow.com/questions/5585532/c-int-to-byte-array
    【解决方案2】:

    如果您尝试添加一个短值(2 字节),您可以这样做

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

    它将以大端顺序附加短值

    【讨论】:

      猜你喜欢
      • 2019-04-19
      • 2013-11-16
      • 2014-04-28
      • 2020-04-25
      • 2014-06-09
      • 2018-04-14
      • 2013-12-25
      • 2015-11-12
      • 1970-01-01
      相关资源
      最近更新 更多