首页 > 编程语言 >Qt编程技巧小知识点(3)十进制与十六进制数据转化

Qt编程技巧小知识点(3)十进制与十六进制数据转化

时间:2024-10-21 22:47:54浏览次数:3  
标签:知识点 Qt bb 十六进制 int 16 二进制 十进制

文章目录

Qt编程技巧小知识点(3)十进制与十六进制数据转化

  上下位机之间数据交互常需要将上位机的十进制发送到下位机,这时候常常涉及到数据进制的转化,这里以十进制与十六进制的数据转化为例,来简要阐述一下:

  • 首先,我们先来一个十进制转十六进制,需要用到两个有趣的操作符号,这里先提前说一下,
    (1)& :求与操作,即:1&1=1,1&0=0,0&0=0;
    (2)>>= : 右移一位且向左赋值,即:二进制的10右移一位变成01
  • 接着,来看下面的代码,我们实现这样一个转化:
    十进制的 56 ,二进制为0011 1000,十六进制为38
    注意:二进制的0011对应十六进制的31000对应十六进制的8.
    所以那,我们只要实现 十进制 变为 二进制,然后 再四位四位 的取数就可以了。
  • 继续, 程序编程一下,下面是一段简要代码,风格是C++的。
int aa = 56;  //十进制的
int bb[2];//十六进制的两位,高位bb[1] = 8,低位bb[0] = 3
int multipl = 1;//乘数因子
for(int ix=0;ix<2;++ix)
{
	bb[ix] = 0;//初始化,挺重要的
	for(int iy=0;iy<4;++iy)
	{
		if(aa & 1)
		{
			bb[ix] += multipl;//最末尾为1,就加因子
		}
		aa >>= 1; // 右移一位
		multipl *= 2;//因子乘二
	}
}
  • 最后,反过来,十六级进制转为十进制,也很好理解啊,还是举一下上面的例子,十六进制的38,这样运算,3*16^1 + 8*16^0=56

小结

   实际操作过程中,进制转化用的非常多,主要是10进制与16进制之间的转化,挺有趣得,而且注意数据类型的长度,比如:C++中long long型的二进制数据长度为64,换成十六进制则会长度为16,int型的二进制数据长度为16,换成十六进制则会长度为4。
  代码,还真是越写越有趣,不过,必须静下心来,防止犯一些 5s 造成的问题,却要花 1h 去找和解决。注意思路,文档开发挺不错的。另外,几个小点记录一下:
(1)循环的索引一定要好好检查,避免数组未初始化时,是否顺序给数组赋值;
(2)数据的长度和类型需要把控好,涉及多个数据类型和长度时,一定要写对应的文档记录;
(3)上位机向下位机发送数据和读取数据,一定要注意地址的设定,地址的间隔多大,地址的类型,都需要认真地核对并记录好。
这样做会省下很多的工夫与时间,可以空出手来做更多自己想做的事情。
  学习,加油,共勉。

标签:知识点,Qt,bb,十六进制,int,16,二进制,十进制
From: https://blog.csdn.net/weixin_42269028/article/details/143101138

相关文章

  • 深度学习CNN算法狗类识别系统01-python带pyqt5界面数据集包配置
    项目基本介绍:【算法】深度学习CNN网络xception算法网络【环境】python=3.8pytorchopencvpyqt5matplotlib(含详细环境配置教程视频)【文件】训练、预测全部源代码、训练好的型、数据集、模型评价指标:训练acc/loss曲线图和混淆矩阵图、UI界面源码及源文件、环境配置教程视......
  • x86_64架构下交叉编译aarch64架构所使用的qt库
    本文基于qt版本5.12.8在x86_64位上交叉移植出aarch64架构使用的库一、编译环境x86_64uisrc@ubuntu:~$archx86_64uisrc@ubuntu:~$^Cuisrc@ubuntu:~$二、QT版本5.12.8下载解压wgethttp://download.qt.io/archive/qt/5.12/5.12.8/single/qt-everywhere-src-5.12.8......
  • Java中的基础知识点---Object
    Object类的常见方法有哪些?Object类是一个特殊的类,是所有类的父类,主要提供了以下11个方法:/** *native方法,用于返回当前运行时对象的Class对象,使用了final关键字修饰,故不允许子类重写。 */publicfinalnativeClass<?>getClass()/** *native方法,用于返回......
  • Springboot接入Mqtt
    MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为远程连接设备提过实时可靠的消息服务,作为一种低开......
  • CH9121_MQTT应用
    参考代码程序下载:https://files.cnblogs.com/files/blogs/808422/EXAM_mqtt_912x.zip?t=1729489963&download=true前言:(1)很多物联网\嵌入式应用需要将采集的数据上传到MQTT服务器以实现集中实时管理。然而可能前期选型时并未考虑到这一点导致选用的MCU没有网络功能无法实现。并且......
  • 用人话讲计算机:小白版Python篇!(一)入门知识点和基本语法规范
    注:以下篇章都是用Pycharm写的,具体安装看我主页教程:2024最新:Python与PyCharm下载教程(含汉化!!!)一、什么是Python?标准版:Python是一种高级的、动态类型的编程语言,以其简洁的语法和丰富的库著称。‌Python由荷兰人吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品,它是一......
  • 计算机体系结构中的总线带宽计算知识点
    这道错题考查的是计算机体系结构中的总线带宽计算知识点。总线带宽是指单位时间内总线上可以传输的数据量,它是衡量总线性能的一个重要参数。总线带宽的计算涉及到总线宽度和总线频率两个关键因素。总线宽度总线宽度,也称为数据路径宽度,是指总线一次能够传输的数据位数。例如,32位......
  • Qt编写的modbus模拟器/支持网络和串口以及websocket/支持网络rtu
    一、使用说明1.1设备模拟-Com第一步,填写要模拟的设备地址,0表示自动处理,也就是收到什么地址就应答什么地址。第二步,填写对应的串口号和波特率。第三步,单击打开串口,成功后会变成关闭串口字样。单击清空数据会将左侧打印栏的信息清空。右侧一堆微调框用于模拟对应设备多个寄......
  • QT 用UI设计界面编写电脑同款计算机标准模式
    成果如下:应学校老师要求,已经实现基础的计算,显示历史记录,语言播放数字的功能。mainwindow.h文件#ifndefMAINWINDOW_H#defineMAINWINDOW_H#include<QVector>#include<QMainWindow>#include<QString>#include<QFile>#include"fileshow.h"#include"ui_f......
  • 408数据结构-折半查找,分块查找 自学知识点整理
    前置知识:查找的基本概念折半查找折半查找又称二分查找,它仅适用于有序的顺序表。因个人习惯,下文均用二分代替折半。二分查找的基本思想:首先将给定值ke......