关于QT内部16进制、十进制、QByteArray,QString
QT里面的数据转化成十六进制比较麻烦,其他的int或者byte等型都有专门的函数,而十六进制没有特定的函数去转化,这我在具体的项目中已经解决(参考网上大神)->小项目程序
QT里面虽然有什么QString str; str.toInt();等函数,但是用不好的话,会出很大的问题。
QByteArray:这个东西可以存放很多数据,16进制的数据、字符串类的数据等。
下面这个data接受的是16进制数据,现在想显示出来就得转化成QString,然后再转化成int类型用于计算
QByteArray data=tcpSocket->readAll(); //接受16进制
QString p = data.toHex(); ui->clearLineEdit->setText(p); //转化成Qstring
data.toInt(,) //转化成int
注意:data.toInt(),直接使用不行!
接下来是接受字符串的转化,
1 QByteArray data=tcpSocket->readAll(); //接受的是字符串
QString p = QString(data); //直接转化就行了
最后是十进制转化成十六进制的问题(主要用在串口和TCP上面),下面程序有几种表述:
1.char p[3]={0x11,0xab,0x0b}; 把里面的数据转化成0x11ab0b发送!
2.int p[3] = {170,170,170}; 把里面数据转化成0xaaaaaa发送!
实现的功能都是一样的,第二种简单一点,下面以第二种为例,第一种类似!
QString a1;
for(int j=;j<;j++)
{
if(my_class->g_data[j]<)
a1+=''+QString::number(my_class->g_data[j], ).toUpper();//防止有0x0a,程序会转换成'a',我们要的是转换成'0a'
else a1+=QString::number(my_class->g_data[j], ).toUpper();
}
//将字符型进制转化为16进制
97 QByteArray MainWindow::QString2Hex(QString str)
98 {
99 QByteArray senddata;
100 int hexdata,lowhexdata;
101 int hexdatalen = 0;
102 int len = str.length();
103 senddata.resize(len/2);
104 char lstr,hstr;
105 for(int i=0; i<len; )
106 {
107 hstr=str[i].toLatin1(); //字符型
108 if(hstr == ' ')
109 {
110 i++;
111 continue;
112 }
113 i++;
114 if(i >= len)
115 break;
116 lstr = str[i].toLatin1();
117 hexdata = ConvertHexChar(hstr);
118 lowhexdata = ConvertHexChar(lstr);
119 if((hexdata == 16) || (lowhexdata == 16))
120 break;
121 else
122 hexdata = hexdata*16+lowhexdata;
123 i++;
124 senddata[hexdatalen] = (char)hexdata;
125 hexdatalen++;
126 }
127 senddata.resize(hexdatalen);
128 return senddata;
129 }
130 //将1-9 a-f字符转化为对应的整数
131 int MainWindow::ConvertHexChar(char ch)
132 {
133 if((ch >= '0') && (ch <= '9'))
134 return ch-'0';
135 else if((ch >= 'A') && (ch <= 'F'))
136 return ch-'A'+10;
137 else if((ch >= 'a') && (ch <= 'f'))
138 return ch-'a'+10;
139 else return (-1);
140 }
上面的程序就是先转换成16进制的QString,千万别写直接number()没有里面参数的转换!
这是我写TCP发送程序的小小总结,网上哟很多这种资料,但是有很多不适合,总结一下,QT里面的数据转换一定要明确进制和类型,其次是调用函数里面参数写具体!
关于QT内部16进制、十进制、QByteArray,QString的更多相关文章
- QT中16进制字符串转汉字
		
最经在研究AT指令接受短信,短信是unicode编码,接受后需要根据系统的编码方案进行相关的转码比如接受到了一串字符4F60597D,它是“你好”的unicode编码,一个unicode编码占两个字节 ...
 - Qt实现16进制unicode转utf-8以及国际音标编码问题
		
由于项目需要,需要对网络资源进行解码.遇到编码问题.研究了下基本编码原理.于是有了下面两个通用代码 1. 16进制unicode转换为utf-8中文显示 QString unicodeToUtf_8( ...
 - Qt 将字符串转成16进制显示
		
最近项目用到了需要将字符串转换成16进制显示.这玩意折腾了一上午. 首先,数据块内容 struct UserData { char Head[3] = {'X','J','J'}; char Flag ...
 - java byte数组与16进制间的相互转换
		
java byte数组与16进制间的相互转换 CreationTime--2018年6月11日15点34分 Author:Marydon 1.准备工作 import java.util.Array ...
 - QT 串口通信 数据16进制发送
		
在QT中进行串口通信时,很多情况要用到发送16进制的数据.从网上找来了一段代码测试能用: static QByteArray QString2Hex(QString str) { QByteArray ...
 - 16进制字符串转QByteArray,char转16进制字符串
		
直接上代码,看代码你们就懂了 1.16进制QString转QByteArray QString str = "01 a5 1e 02"; QByteArray tmpBy; Str ...
 - python经常使用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)
		
进行协议解析时.总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上.直接上样例 整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 ...
 - python常用的十进制、16进制、字符串、字节串之间的转换
		
进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上,直接上例子 整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 ...
 - [参考]ASCII对照表 及 字符与二进制、十进制、16进制之间的转化(C/C++)
		
第1节 ASCII码对照表 1.1 ASCII控制字符 1.2 ASCII可显示字符 第2节字符的进制转换 2.1 获取字符(8位)的上四位和下四位 2.2 获取字符(上表中的‘图形’)所对应的十六进 ...
 
随机推荐
- 浅谈 React
			
机缘巧合认识React,翻了2天的资料,又整理了1天,也算是简单入门了;之前也学过angular,相比来说,的确React代码逻辑更加简单明了,理解起来也相对容易. React 具备以下特性:1.声明 ...
 - android 自动拨打电话 挂断电话代码
			
页面布局文件代码 ( res下面的layout下面的activity_main.xml代码 ) <RelativeLayout xmlns:android="http://sche ...
 - CTF之MD5
			
MD5是一种常见的加密方式,但准确来说,它只是一种编码方式,它将任意有限长度的字符串通过哈希函数转换为特定长度的字符串. MD5编码具有单向性,即由明文变密文简单,由密文变明文困难. 破解时只能通过暴 ...
 - JS校验   if (! temp_var) {}  //拦截 ''和 undefined
			
if (! aaa) {} //拦截 ' ' 和 undefined 和 0 不拦截null
 - POI解析excel格式的文件(xls,xlsx)
			
先贴出所需的jar包: 1.poi-3.17-beta1.jar 2.poi-ooxml-3.17-beta1.jar 3.poi-ooxml-schemas-3.17-beta1.jar 4.com ...
 - Vue中的“混合”——mixins使用方法
			
混合是一种灵活的分布式复用 Vue 组件的方式.混合对象可以包含任意组件选项.以组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项.当组件和混合对象含有同名选项时,这些选项将以恰当的方式混 ...
 - Java的历史和大事记
			
Java的历史 在上世纪90 年代初,sun 公司有一个叫做Green 的项目,目的是为家用消费电子产品开发一个分布式代码系统,这样就可以对家用电器进行控制,和它们进行信息交流.詹姆斯·高斯林(Jam ...
 - PDFSharp生成PDF (转)
			
http://www.cnblogs.com/zhouxin/p/3228108.html 在上面用OpenXML生成word后,原来利用Word2010里的导出成PDF功能就不能用. 然后找开源组件 ...
 - adnanh webhook 框架request values 说明
			
request values 在adnanh webhook 是比较重要的,规则触发以及命令参数传递都是通过它 支持的request values 类似 http header 查询参数 play ...
 - Cenots7对lvm逻辑卷分区大小的调整
			
Cenots7对lvm逻辑卷分区大小的调整 (针对xfs和ext4不同文件系统) 1.支持的文件系统类型 特别注意的是: resize2fs命令 针对的是ext2.ext3.ex ...