将int转换为Qt中的QByteArray
convert an int to QByteArray in Qt
我正在尝试将int转换为QByteArray
。我用的是QByteArray::number(m_vman);
这个方法,对吗?
我正在尝试使用number()
来获取QByteArray
的int。
我正在尝试以下代码,但字节数组为零
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;
您可以简单地这样做。
int myInt = 123;
QByteArray q_b;
q_b.setNum(myInt);
与实际问题标题相关,以下静态函数应该肯定有效:
QByteArray::number
我标记为重复,因为你本可以搜索得更好(说真的,有很多这样的问题)。无论如何,这是最简单的解决方案:
int myInt;
QByteArray bA;
QDataStream stream(&bA, QIODevice::WriteOnly);
stream << myInt;
这个线程很旧,因为我刚刚偶然发现了这个问题(或类似的问题),下面是我的建议:
为了在QByteArray中存储整数变量的值(这里没有确切定义值,我指的是以字节为单位的内存表示),我建议:
QByteArray arr = QByteArray::fromRawData(reinterpret_cast<const char *>(&m_vman), sizeof(m_vman));
测试用例:
#include <QtCore>
int main() {
qint64 intValue = 42;
QByteArray bytes = QByteArray::fromRawData(reinterpret_cast<const char *>(&intValue), sizeof(intValue));
qDebug() << "intValue: " << intValue;
qDebug() << "bytes: " << bytes.toHex(':');
}
输出(字节是小端序表示):
intValue: 42
bytes: "2a:00:00:00:00:00:00:00"
数组不是零,您的代码运行良好:
#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() + ' ' + ' ' + ' ' + '1';
auto two = QByteArray() + ' ' + ' ' + ' ' + '2';
Q_ASSERT(test(true) == one);
Q_ASSERT(test(false) == two);
}
如果存储在其中的值是零,它可能是"零",但这是正确的。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- .cpp和.h文件中的模板专用化声明
- 反向给定链表中的K节点
- 正在查找文档以获得PS4平台的C++中的设备信息
- enum是C++中的宏变量还是整数变量
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 将字符串存储在c++中的稳定内存中
- 文本文件中的单词链表
- 递归函数计算序列中的平方和(并输出过程)
- 如何从C++中的依赖类型中获得它所依赖的类型
- C++中的"inline"关键字
- 如何从 std::optional 中获取 QByteArray<QByteArray>,并在没有其他 malloc 的情况下保留 std::nullopt?
- 如何从存储在 QByteArray 中的十六进制值计算校验和
- 将 NULL 视为 QByteArray 中的字符
- QT中的QByTearray转换
- Qt C++ 如何将加密文本的QByteArray保存到文件中,然后读取并格式化为QByteArray
- 将int转换为Qt中的QByteArray
- QML 中的类型化数组?QByteArray 到 JS Uint8Array 来回互操作
- 如何使用toInt从Qt中的QByteArray中提取整数
- 交换QByteArray中的字节