Qt开发的数据转换小工具,支持16进制字符串转Qt的基本数据类型

一、介绍

因为在平时工作中经常用到十六进制转成其他数据的情况,就写一个小工具用于平时数据转换,现在分享给大家,有不足之处请多指教。界面如下:

同时里面的函数也可以单独拿出来使用,程序进行转换时可以直接调用。

二、转换过程中注意的点

1、内存拷贝函数的使用
 memcpy(&output, charlist, sizeof(output));

memcpy是内存拷贝函数,它可以实现指定内存大小的拷贝。

它有三个参数:
第一个参数类型是void*,用来接收目的地的首地址;
第二个参数类型是const void*,用来接收源头内容的首地址(拷贝时源头的内容不会被改变,用const修饰会更安全);
第三个参数类型是size_t(无符号整型),表示从源头地址开始向后需要拷贝的字节数。

详细的函数介绍可以参考:内存函数(memcpy、memmove、memset、memcmp)_qt memcpy-优快云博客

2、字符串转QByteArray
    bool isOk = false;
    QByteArray bytes;
    for(int i=0; i<result.length(); i+=2)
    {
        QString subStr = result.mid(i,2);
        int tempInt = subStr.toInt(&isOk,16);
        isSuccess = isOk;
        if(!isOk) break;
        bytes.append(tempInt);
    }

十六进制字符串转化成QByteArray,这个需要先转化成int类型,再放入QByteArray。如果是以字符串放入QByteArray,结果是错误的。

3、大小端的区分

简单的讲就是:

大端模式是高位在前低位在后,比如0x01FF,0x01就是高八位、0xFF就是低八位.

小端模式是低位在前高位在后,转化的时候是反着来的。

如果转为为quint16,那么大段模式 0x01FF = 511,小端模式 0x01FF = 65281

大小端模式详解参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值