Qt中串口通信常用字符串转换函数

该代码实现了字符串从UTF8到GB2312的转换,以及字符串到ASCII的16进制表示。同时,提供了CRC16校验码的计算方法,用于数据验证。最后,展示了如何将16进制字符串转换为字节数据并发送至串口。

1.字符串转GB2312

传入要转换的字符串,即可返回GB2312的16进制的字符串

QByteArray utf8ToGB2312(QString utf8Data)
{
    if(utf8Data.size()>12) {
        //QMessageBox::information(this, "警告", "名称过长,应小于12个字");
        return "[error]名称过长,应小于12个字";
    }
    //原始UTF8数据
    QString strOrgData(utf8Data);
    QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForLocale(utf8);

    //1.UTF8 ---> GBK
    //UTF8转unicode
    QString strUnicode= utf8->toUnicode(strOrgData.toLocal8Bit().data());

    //Unicode转GBK
    QTextCodec *gbk = QTextCodec::codecForName("gbk");
    //转化为16进制
    QByteArray bytegbkHex = gbk->fromUnicode(strUnicode).toHex();
    return bytegbkHex;
}

2.字符串转ASCII(16进制)

QByteArray stringToASCII(QString data)
{
    //QByteArray byte = data.toUtf8();
    QByteArray byte = data.toUtf8();
    QByteArray byteASCII;
    for(char c: byte) {
        byteASCII += QString::
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值