Qt关于hex转double,或者QByteArray转double
正常的00 ae 02 33这种类型的hex数据类型可以直接通过以下代码进行转换
double QDataConversion::hexToDouble(QByteArray p_buf)
{double retValue = 0;if(p_buf.size()>=4){QString str1 = byteArrayToHexStr(p_buf.mid(0,1));QString str2 = byteArrayToHexStr(p_buf.mid(1,1));QString str3 = byteArrayToHexStr(p_buf.mid(2,1));QString str4 = byteArrayToHexStr(p_buf.mid(3,1));bool ok;int dec1 = QString(str1).toInt(&ok,16); //以16进制读入int dec2 = QString(str2).toInt(&ok,16); //以16进制读入int dec3 = QString(str3).toInt(&ok,16); //以16进制读入int dec4 = QString(str4).toInt(&ok,16); //以16进制读入if(dec1 >= 1){retValue = -(dec2*65536 + dec3*256+dec4);}else{retValue = dec2*65536 + dec3*256+dec4;}}return retValue;
}
但是ff ae 02 33数据类型,是ff开头的,4字节的情况表示负数的话就没办法通过上面的方式转换,全网找了都没找到负数类型的转换正常的方法,经过查看二进制编码

如果代表负数的话

编码类型完全不同。所以上面的代码不适用于负数的转换。
最后只能自己根据负数补码的规则,自己bit位去运行
if(t_bitVec_overturn.size()>=32){QBitArray r_bitArr_1;QBitArray r_bitArr_2;QBitArray r_bitArr_3;QBitArray r_bitArr_4;r_bitArr_1.resize(8);r_bitArr_2.resize(8);r_bitArr_3.resize(8);r_bitArr_4.resize(8);for(int i = 0;i < t_bitVec_overturn.size();i++){int pos = i%8;//值是0-7if(i < 8){r_bitArr_1.setBit(pos,t_bitVec_overturn.at(i));}if(8<= i&& i < 16){r_bitArr_2.setBit(pos,t_bitVec_overturn.at(i));}if(16<=i&& i < 24){r_bitArr_3.setBit(pos,t_bitVec_overturn.at(i));}if(24<=i&& i < 32){r_bitArr_4.setBit(pos,t_bitVec_overturn.at(i));}}QByteArray byte1 = bitsToBytes(r_bitArr_1);QByteArray byte2 = bitsToBytes(r_bitArr_2);QByteArray byte3 = bitsToBytes(r_bitArr_3);QByteArray byte4 = bitsToBytes(r_bitArr_4);qDebug()<<"byte1=="<<byte1;qDebug()<<"byte2=="<<byte2;qDebug()<<"byte3=="<<byte3;qDebug()<<"byte4=="<<byte4;QByteArray t_result = byte1+byte2+byte3+byte4;qDebug()<<"t_result=="<<t_result;return_value = -hexToDouble(t_result);}相关文章:
Qt关于hex转double,或者QByteArray转double
正常的00 ae 02 33这种类型的hex数据类型可以直接通过以下代码进行转换 double QDataConversion::hexToDouble(QByteArray p_buf) {double retValue 0;if(p_buf.size()>4){QString str1 byteArrayToHexStr(p_buf.mid(0,1));QString str2 byteArrayToHexStr(p_buf.mid(1,…...
Java“牵手”根据关键词搜索(分类搜索)拼多多商品列表页面数据获取方法,拼多多API实现批量商品数据抓取示例
拼多多商城是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取拼多多商品列表和商品详情页面数据,您可以通过开放平台的接口或者直接访问拼多多商城的网页来获取商品列表和详情信息。以下是两种常用方…...
Linux相关知识点
Linux是什么? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。 Linux内核 是一个Linux系统的内核&…...
常见的的数据结构
数组(Array):一组按顺序排列的元素的集合,可以通过索引访问和修改元素。 链表(Linked List):由一系列节点组成的数据结构,每个节点包含数据和指向下一个节点的指针。 栈࿰…...
专业心理咨询师助你轻装上阵,向内耗说不!
引言 身为技术人,你是否经常感觉自己被掏空了精力,行动力不佳?又或者觉得自己的工作没有成就和意义,工作状态持续不佳?你是否总有一种无法消除的疲惫?即使没有学习、工作,而是选择看剧、刷短视频…...
Ubuntu安装mysql5.7
目录 1. 更新系统软件包2. 安装MySQL 5.73. 启动MySQL 服务4. 设置MySQL root 密码5. 验证MySQL 安装6. 启用远程访问7. 创建新用户8. 为新用户授予权限9. mysql命令 以Ubuntu 18.04系统为例,安装MySQL 5.7。操作步骤如下: 1. 更新系统软件包 sudo apt…...
vue2,使用element中的Upload 上传文件,自定义上传http-request上传,上传附件支持多选,多个文件只发送一次请求,代码里有注释
复制直接使用,组件根据multiple是否多选来返回附件内容,支持多选就返回数据附件,则返回一个附件对象。 //uploadFiles.vue<template><div><el-uploadclass"avatar-uploader"action"#":accept"accep…...
flutter定位简单工具类
import package:permission_handler/permission_handler.dart;class PermissionUtil {/// 获取用户定位权限static Future<bool> getLocationStatus() async {Map<Permission, PermissionStatus> statuses await [Permission.location,].request();return statuse…...
java请求SAP系统,发起soap的xml报文,实体类转换,idea自动生成教程
1、将接口的网页地址,右键保存,然后修改文件后缀为wsdl文件 2、idea全局搜索 wsdl,找到自动转换javabean插件: 3、点击后,选择下载改完后缀的文件(选择): 4、将无用的class文件删除掉 5、请求sap的地址为…...
不同屏幕的触控技术
不同显示屏的触控技术原理有所不同。触摸屏的基本原理是,用手指或其他物体触摸安装在显示器前端的触摸屏时,所触摸的位置(以坐标形式)由触摸屏控制器检测,并通过接口(如RS-232串行口)送到CPU,从而确定输入的信息。 目前市场上常…...
深度解读thenable
在学习promise时,我们经常会遇到thenable一词。关于thenable,目前的资料解读不够通俗易懂,又或者脉络不够清晰,本文主要对thenable进行详细剖析,以便各位参考。笔者希望你能够仅凭这一篇文章,便能深度掌握该…...
原生无限极目录树详细讲解
原生无限级目录树 当涉及到原生的无限级目录树,我们可以使用递归算法来实现。以下是一个使用 JavaScript 实现原生无限级目录树的示例 介绍 原生无限级目录树是一种常见的数据结构,用于组织多层级的目录或分类数据。通过递归算法,我们可以…...
剑指offer(C++)-JZ64:求1+2+3+...+n(算法-位运算)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 求123...n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句&…...
“深入探究JVM内部机制:如何实现Java程序的运行环境?“
标题:深入探究JVM内部机制:如何实现Java程序的运行环境? 摘要:本文将深入探究Java虚拟机(JVM)的内部机制,重点讨论JVM如何实现Java程序的运行环境。我们将从JVM的结构、类加载、内存管理、垃圾…...
Mac更新homebrew时卡住的解决办法
Mac更新homebrew时卡住的解决办法 引起问题的原因brew命令安装软件跟这3个仓库地址有关1、brew2、homebrew-core3、homebrew-bottles4、若/bin/zsh,则输入5、若/bin/bash,则输入6、更新brew 引起问题的原因 知其然,还要知其所以然。brew的更…...
带你了解—在外远程群晖NAS-群晖Drive挂载电脑磁盘同步备份【无需公网IP】
文章目录 前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用 2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用 3. 结语 前言 群晖作为专业的数据存储中心&…...
计算机网络第2章(物理层)
计算机网络第2章(物理层) 2.1 物理层的基本概念2.2 物理层下面的传输媒体2.2.1 导引型传输媒体2.2.2 非导引型传输媒体 2.3 传输方式2.3.1 串行传输和并行传输2.3.2 同步传输和异步传输2.3.3 单向通信(单工)、双向交替通信&#x…...
windows钩子保护自身进程不被破坏
代码来自于《windows核心编程》作者: APIHOOK.h头文件: #pragma once #include <Windows.h> class CAPIHOOK { public: CAPIHOOK(LPTSTR lpszModName, LPSTR pszFuncName, PROC pfnHook, BOOL bExcludeAPIHookMod TRUE); ~CAPIHOOK(void); p…...
Linux系统查看文件系统类型C代码
系统:VM Ubuntu 实现Linux系统下通过输入指定路径查看文件系统类型,MSDOS_SUPER_MAGIC,NTFS_SUPER_MAGIC和EXT4_SUPER_MAGIC这些宏定义并不是在sys/mount.h中定义的,它们实际上是在linux/magic.h头文件中定义的。不同系统下宏定义可能不一样&…...
Python中的正则表达式
大家好,今天我们将通过详细的解释和代码示例,探讨如何在Python中使用正则表达式。 介绍 正则表达式(regex)是一种用于操作文本和数据的强大工具,它们提供了一种简洁灵活的方式来“匹配”(指定和识别&…...
汇川AM402与串口调试助手通信实战:RS485转232接线与PLC寄存器配置详解
汇川AM402与串口调试助手通信实战:RS485转232接线与PLC寄存器配置详解 在工业自动化领域,设备间的可靠通信是实现智能控制的基础。汇川AM402系列PLC作为国产工控设备的代表,其串口通信功能在产线监控、数据采集等场景中应用广泛。本文将手把手…...
ESP32C3低功耗表情挂件:亚毫安级运动唤醒与OLED动态显示设计
1. 项目概述ESP32C3低功耗表情挂件是一款面向可穿戴与便携式交互场景的微型嵌入式设备,其核心设计目标是在有限体积与电池容量约束下,实现长时间待机、环境感知驱动的动态显示以及用户友好的物理交互。该挂件采用ESP32C3作为主控芯片,配合三轴…...
京东自营家装来了,用AI进军家装未来何在?
DoNews消息 3月13日,京东全新发布AI智慧家装品牌——京东家装,通过自营模式入场重新定义家装新标准,并以 AI及超级供应链能力驱动家装行业智能化与标准化升级,为消费者提供一站式整家科技住宅解决方案。当天,京东家装重…...
分发:AI的终极护城河
本周,我一直在思考分发,不是作为一种营销职能,而是作为AI的终极权力层。每家公司都在谈论模型,但真正的游戏是覆盖、控制和复合访问。我已经在这些行业中反复观察到这种模式。 这正是OpenAI传闻中的Agent Builder发布所正在上演的…...
分辨率与WLAN
背景 杂七杂八随便聊 一、分辨率 1080p分辨率究竟是多少乘以多少? 1920 1080 1080p 19201080 (FHD,全高清),虽然1920接近2000但不叫2k2k 25601440(QHD,2K/Quad HD)4K:…...
使用OpenClaw读取和生成PPT
PPT是大家经常要用到的展示工具,也是我们人类交流中经常用到的工具。我就想用OpenClaw怎么能生成PPT。 在OpenClaw出来之前,就有很多用AI生成PPT的方式,而大部分都能很好的移植到OpenClaw中。 AI生成PPT的方式总结 WPS生成PPT,传统…...
【独家原创】基于(黏菌算法)SMA-Transformer多变量时序预测(多输入单输出)附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...
《QGIS快速入门与应用基础》220:工具栏:布局元素添加/编辑
作者:翰墨之道,毕业于国际知名大学空间信息与计算机专业,获硕士学位,现任国内时空智能领域资深专家、CSDN知名技术博主。多年来深耕地理信息与时空智能核心技术研发,精通 QGIS、GrassGIS、OSG、OsgEarth、UE、Cesium、OpenLayers、Leaflet、MapBox 等主流工具与框架,兼具…...
浏览器拓展通用安装方法 edge浏览器、谷歌浏览器、google浏览器、火狐浏览器
浏览器拓展通用安装教程 浏览器扩展安装简明教程 1、访问GitHub项目页面, 2、下载扩展文件 3、在Chrome/Edge浏览器中: 打开扩展管理页面 启用"开发者模式" 4、点击"加载已解压的扩展程序" 选择下载的扩展文件夹 5、安装完成后即可…...
java快速排序超详细总结:核心实现+简化版+趣味版
java快速排序超详细总结:核心实现简化版趣味版面试高频 | 四种写法 | 含过程演示 | 新手友好概要 详解快速排序三种写法:挖坑法、双指针交换法、单指针法,每种均附分步演示与代码注释。涵盖复杂度分析、稳定性及面试易错点,附Pyth…...
