首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比特移动QBytearray?

比特移动QBytearray?
EN

Stack Overflow用户
提问于 2014-02-10 14:14:20
回答 2查看 2.8K关注 0票数 1

我正在寻找一种转移QByteArray的方法。

代码语言:javascript
复制
QByteArray statusByte = QByteArray::fromHex("40");  // 0100 0000

我需要实现的是通过位移位将statusByte转换为0x20。由于我不能直接转换QByteArray,那么实现移位的最简单方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-10 16:13:17

当您谈论单个字节时,位移位不是一个问题,这是微不足道的(我不知道为什么您声称这是不可能的)。

代码语言:javascript
复制
QByteArray statusByte = QByteArray::fromHex("40");
statusByte[0] = statusByte[0]>>1;
statusByte[0]>>=1; // this should also work

如果您有多个字节,那么它就更复杂了!

  1. 安迪安!如何定义最老位应该转移到下一个字节或前一个字节?
  2. 当数组结束时应该发生什么?数据松散,还是扩展数组?
票数 1
EN

Stack Overflow用户

发布于 2014-02-10 15:42:17

如果您只想从一个字节的十六进制表示中获得一个数字(字节)值,而不是多个字节,则不需要真正的字节数组。

代码语言:javascript
复制
#if 1
  // Qt 5, C++11 compilers
  quint8 byte = QStringLiteral("40").toInt(nullptr, 16);
#endif
#if 0
  // Qt 5, pre-C++11 compilers
  quint8 byte = QStringLiteral("40").toInt(NULL, 16);
#endif
#if 0
  // Qt 4
  quint8 byte = QByteArray("40").toInt(NULL, 16);
#endif
byte >>= 1;
Q_ASSERT(byte == 0x20); // this is for demonstration only

如果你需要同时移动多个字节,当然这也是可能的-请修正你的问题以明确这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21679522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档