字符串与16进制转化
来源:互联网 发布:php 文章管理系统 编辑:程序博客网 时间:2024/06/05 15:12
鄙人在学习QT软件编写上位机的过程中,电表的地址为6个16进制的字节,需要用上位机进行操作更改。
16进制转 字符串的代码如下:
QString str;
for(int i =0;i<6;i++)
{
str += QString("%1").arg(stru.protocol.dlt645.addr[i], 2, 16, QChar('0'));
}
其中,addr[i] 为从下位机读到的地址,2代表宽度,16代表16进制数据,QString QString::arg(inta,intfieldWidth = 0,intbase = 10,QCharfillChar = QLatin1Char( ' ' )) const
If fillChar is '0' (the number 0, ASCII 48), the locale's zero is used. For negative numbers, zero padding might appear before the minus sign.
字符串转16进制如下:
因为上位机输入的是地址连续的字符串,没有任何断点(split)不能用,只能用mid 来实现,获得每两个字节,然后再转到16进制数据通过串口输出。 mid的字节从0开始数(代表1)。
QString str = ui->tableWidget->item(iRow,4)->text();
QString addr0,addr1,addr2,addr3,addr4,addr5;
addr0 = str.mid(0,2);
addr1 = str.mid(2,2);
addr2 = str.mid(4,2);
addr3 = str.mid(6,2);
addr4 = str.mid(8,2);
addr5 = str.mid(10,2);
stru.protocol.dlt645.addr[0]=addr0.toInt(0,16);
stru.protocol.dlt645.addr[1]=addr1.toInt(0,16);
stru.protocol.dlt645.addr[2]=addr2.toInt(0,16);
stru.protocol.dlt645.addr[3]=addr3.toInt(0,16);
stru.protocol.dlt645.addr[4]=addr4.toInt(0,16);
stru.protocol.dlt645.addr[5]=addr5.toInt(0,16);
为保证每次更改地址时,每次输入的地址必须为12位,做了一个比较Low警告处理,如下:
if(str.size() == 12)
{
QString addr0,addr1,addr2,addr3,addr4,addr5;
addr0 = str.mid(0,2);
addr1 = str.mid(2,2);
addr2 = str.mid(4,2);
addr3 = str.mid(6,2);
addr4 = str.mid(8,2);
addr5 = str.mid(10,2);
stru.protocol.dlt645.addr[0]=addr0.toInt(0,16);
stru.protocol.dlt645.addr[1]=addr1.toInt(0,16);
stru.protocol.dlt645.addr[2]=addr2.toInt(0,16);
stru.protocol.dlt645.addr[3]=addr3.toInt(0,16);
stru.protocol.dlt645.addr[4]=addr4.toInt(0,16);
stru.protocol.dlt645.addr[5]=addr5.toInt(0,16);
}
else
{
QMessageBox::warning(this,tr("警告"),tr("电表的地址为12位!请正确输入"));
return;
}
这样只要输入的超过12位或不足12位,都需要重新设置地址。
阅读全文
0 0
- 字符串与16进制转化
- 字符串与16进制字符串相互转化
- 16进制编码与字符串的互相转化
- 16进制编码与字符串的互相转化
- java 二进制数据与16进制字符串相互转化
- C++10进制字符串与十六进制字符串相互转化
- 16进制字符串转化为数字
- 16进制字符串转化为颜色
- 16进制整数转化成字符串
- 字符串和16进制相互转化
- 二进制转化为16进制字符串
- 字符串和16进制字符串的相互转化
- unity 16位进制字符串转化为10进制字符串
- 将string字符串转化为16进制字符串
- 字节数组byte[]与16进制字符串的相互转化
- 整数与字符串转化
- 汉字与16进制转化
- string char* 16进制数字转化 unsigned char* 转化 字符串拼接
- 使用IDEA搭建SSM框架(IDEA+Maven+Spring+SpringMVC+MyBatis)
- 出售各类账号的小项目 小赚一笔
- Linux-LVS负载均衡DR模式
- 二叉树遍历(已知中序和按层遍历求先序 递归)
- 网络编程概述和三要素(IP/端口号/协议)以及Socket通信原理
- 字符串与16进制转化
- linux系统下编写I2C驱动
- Android学习笔记一之Android基础
- 解决提交表单时Xss攻击的问题
- 用冒泡排序的算法对输入的字符串进行排序
- 单例模式
- Android传输数据时MD5加密解密详解
- Excel创建组一样可以完成隐藏和取消隐藏的功能
- JAVA_多线程_单例模式