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的更多相关文章

  1. QT中16进制字符串转汉字

    最经在研究AT指令接受短信,短信是unicode编码,接受后需要根据系统的编码方案进行相关的转码比如接受到了一串字符4F60597D,它是“你好”的unicode编码,一个unicode编码占两个字节 ...

  2. Qt实现16进制unicode转utf-8以及国际音标编码问题

    由于项目需要,需要对网络资源进行解码.遇到编码问题.研究了下基本编码原理.于是有了下面两个通用代码 1. 16进制unicode转换为utf-8中文显示 QString unicodeToUtf_8( ...

  3. Qt 将字符串转成16进制显示

    最近项目用到了需要将字符串转换成16进制显示.这玩意折腾了一上午. 首先,数据块内容 struct UserData { char Head[3] = {'X','J','J'}; char Flag ...

  4. java byte数组与16进制间的相互转换

      java byte数组与16进制间的相互转换 CreationTime--2018年6月11日15点34分 Author:Marydon 1.准备工作 import java.util.Array ...

  5. QT 串口通信 数据16进制发送

    在QT中进行串口通信时,很多情况要用到发送16进制的数据.从网上找来了一段代码测试能用: static QByteArray QString2Hex(QString str) { QByteArray ...

  6. 16进制字符串转QByteArray,char转16进制字符串

    直接上代码,看代码你们就懂了 1.16进制QString转QByteArray QString str = "01 a5 1e 02"; QByteArray tmpBy; Str ...

  7. python经常使用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)

    进行协议解析时.总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上.直接上样例 整数之间的进制转换: 10进制转16进制: hex(16)  ==>  0x10 ...

  8. python常用的十进制、16进制、字符串、字节串之间的转换

    进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上,直接上例子 整数之间的进制转换: 10进制转16进制: hex(16)  ==>  0x10 ...

  9. [参考]ASCII对照表 及 字符与二进制、十进制、16进制之间的转化(C/C++)

    第1节 ASCII码对照表 1.1 ASCII控制字符 1.2 ASCII可显示字符 第2节字符的进制转换 2.1 获取字符(8位)的上四位和下四位 2.2 获取字符(上表中的‘图形’)所对应的十六进 ...

随机推荐

  1. 程序运行时间c++/matlab

    前言 一般在调试程序的过程中,需要查看代码运行速度的快慢,此时则需要计算代码的运行时间. 实验过程: c++: #include<iostream> #include<time.h& ...

  2. android中的两种上下文区别

    1.this    继承于content      子类 2.getAppliCationContext()     返回值为context    父类 父类有的子类都有,子类父类不一定有. 在对话框 ...

  3. iFiles——苹果上最好用的文件管理器 - imsoft.cnblogs

  4. Mr. Kitayuta's Colorful Graph CodeForces - 506D(均摊复杂度)

    Mr. Kitayuta has just bought an undirected graph with n vertices and m edges. The vertices of the gr ...

  5. 大家一起做训练 第一场 G CD

    题目来源:UVA 624 题目的意思就是:我现在需要从 t 张CD中拿出一部分来,尽可能的凑出接近 N 这么久的音乐,但是不能超过 N. CD不超过20张,每张长度不超过 N ,不能重复选. 一个很简 ...

  6. JMeter连接数据库(查询出的数据作为参数)

    针对Mysql jdbc:mysql://ip:3306/数据库名?useUnicode=true&characterEncoding=utf8&allowMultiQueries=t ...

  7. 【转】每天一个linux命令(30): chown命令

    原文网址:http://www.cnblogs.com/peida/archive/2012/12/04/2800684.html chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者 ...

  8. Oracle数据泵的使用

    几乎所有DBA都熟悉oracle的导出和导入实用程序,它们将数据装载进或卸载出数据库,在oracle  database 10g和11g中,你必须使用更通用更强大的数据泵导出和导入(Data Pump ...

  9. 关于 Cookie-free Domains (为什么将静态图片,js,css存放到单独的域名?)

    这篇文章对高性能web开发具有参考性:http://developer.yahoo.com/performance/rules.html 本文主要描述使用裸域名做网站主域名时,如何用子域名做 cook ...

  10. Centos 配置ifconfig命令

    刚装完CentOS 后ifconfig命令可能是不可用的,那么需要以下配置 ip addr vi /etc/sysconfig/network-scripts/ifcfg-xx (ONBOOT=yes ...