QByteArray字节流和二进制与字符的关系以及tohex() toLatin1
创始人
2024-05-17 09:14:29
0

QByteArray

存储的是字节,二进制形式,即ascii码的二进制编码。输出的时候,会输出二进制对应的字符

即一个映射:
二进制到ascii码的映射

而.tohex()会将二进制转化为16进制字符,这里的16进制字符又是作为值域了,实际存储二进制编码已经变了

QByteArray array("abcdefghijklmn");QByteArray b=array.toHex();qDebug()<

结果:

"abcdefghijklmn" 
"6162636465666768696a6b6c6d6e" 
6 1 6 2 //前3个是字符,最后一个是数字,说明,底层存的是16进制字符对应的二进制编码

例如:

QByteArray array("abc");qDebug()<

输出:

"abc" 
"616263" //a的16进制编码就是61

QString

string中保存的每个单位是char类型
str[i]到str[i].toLatin1()的区别就是Qchar和Byte(char)的区别
即从unicode16位编码(QChar)转化为ascii8位编码(char)
做这个转化是因为串口的write函数放送的只能是Byte(char)型数据

hstr=str[i].toAscii();//qt4hstr=str[i].toLatin1();//qt5

测试代码:

QString str("love");qDebug()<

结果:

'l' 'o' v //这里的v仍然是一个字符,只不过是Byte型

QChar

QString 的str[i]类型为QChar,大小为2字节,保存的是16位的unicode编码

The QChar class provides a 16-bit Unicode character.

str[i]返回的是一个QChar字符的应用,大小为2字节

QCharRef QString::operator[](int position)
Returns the character at the specified position in the string as a modifiable reference.Example:QString str;if (str[0] == QChar('?'))str[0] = QChar('_');
The return value is of type QCharRef, a helper class for QString. When you get an object of type QCharRef, you can use it as if it were a QChar &. If you assign to it, the assignment will apply to the character in the QString from which you got the reference.

串口收发数据的16进制的含义

可能不同的串口软件有不同的含义
比如下面这个软件,16进制发送就只是在发送端的显示层将字符串转换为16进制,发的是同一个东西,16进制接收就是在接收端显示层将字符串转换为16进制字符串。
在这里插入图片描述

对于另一个串口助手来说

1.发数据

正常发送就是发送输入的字符串,
16进制发送就是在发送前在发送端将原字符串转换为16进制字符串发出去
16进制发送是以发送字符串作为16进制编码,而不是发字符串的16进制编码。(就是说我发送框输入的当成是16进制编码,发送时(每两个字符当成一个字节)转换为对应的字节流)

2.收数据

正常接收就是将收到的字节流转为字符串显示出来
16进制接收就是在接收端先将收到的字节流转换为16进制只对应的字节流再转换为字符串显示出来

总结

一、收
收正常:字节流对应的字符串
收16进制:字节流的16进制对应字符串二、发
发正常:字符串对应的字节流
发16进制:字符串作为16进制对应的字节流

在这里插入图片描述

在这里插入图片描述

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...