m0_66009863 2023-03-10 11:50 采纳率: 0%
浏览 32

QByteArray 16进制数据分割成若干个数组的问题

QByteArray 16进制数据分割成若干个数组的问题

有16进制文件 如下a90101ffaa分成5个数组,a9为第一个数组,01为第二个数组,01为第三个数组,ff为第四个数组,aa为第五个数组

 

  • 写回答

2条回答 默认 最新

  • CodeBytes 2023-03-10 12:10
    关注

    该回答引用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"},分别对应原始数据中的五个数组。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月10日

悬赏问题

  • ¥15 岛津txt格式文件转nirs格式
  • ¥15 石墨烯磁表面等离子体
  • ¥15 angular 项目无法启动
  • ¥15 安装wampserver,图标绿色,但是无法进入软件
  • ¥15 C++ MFC 标准库 加密解密解惑
  • ¥15 两条数据合并成一条数据
  • ¥15 Ubuntu虚拟机设置
  • ¥15 comsol三维模型中磁场为什么没有“速度(洛伦兹项)”这一选项
  • ¥15 electron 如何实现自定义安装界面
  • ¥15 关于#linux#的问题:子进程C运行“ls –l”命令,且显示“C运行ls-l命令”(语言-c语言)