QByteArray 16进制数据分割成若干个数组的问题
有16进制文件 如下a90101ffaa分成5个数组,a9为第一个数组,01为第二个数组,01为第三个数组,ff为第四个数组,aa为第五个数组
有16进制文件 如下a90101ffaa分成5个数组,a9为第一个数组,01为第二个数组,01为第三个数组,ff为第四个数组,aa为第五个数组
该回答引用ChatGPT
可以使用 QByteArray 类的 toHex() 函数将原始数据转换为十六进制字符串,然后按照每两个字符分割成一个子串,最后将每个子串转换为对应的十六进制数字。
以下是一个示例代码:
QByteArray hexData = QByteArray::fromHex("a90101ffaa"); // 从十六进制字符串创建 QByteArray
QVector<QByteArray> hexArrays; // 存放分割后的数组
for (int i = 0; i < hexData.size(); i += 2) {
QByteArray subArray = hexData.mid(i, 2); // 取出每个子串
hexArrays.append(subArray); // 添加到数组中
}
在上面的代码中,我们使用 QByteArray 的 fromHex() 函数将原始数据转换为十六进制字符串,然后使用 QByteArray 的 mid() 函数按照每两个字符取出一个子串,最后将每个子串添加到一个 QVector 中,即可得到分割后的数组。
在本例中,hexArrays 中的值为 {"a9", "01", "01", "ff", "aa"},分别对应原始数据中的五个数组。