2字节十六进制浮点数 qt_Qt之8个字节转化为double小数

首先要理解double的存储方式,具体可查找相关的博客

本文实现的是将8个字节(存储为16进制的字符串)转化为对应的double类型

double MainWindow::qByteArraytodouble(QString qstr)

{

QByteArray byte;

StringToHex(qstr,byte);

double result;

memcpy(&result, byte.data(), 8);

return result;

}其中StringToHex函数定义如下

/***********字符串转16进制数***********/

void MainWindow::StringToHex(QString str, QByteArray &senddata)

{

int hexdata,lowhexdata;

int hexdatalen = 0;

int len = str.length();

senddata.resize(len/2);

char lstr,hstr;

for(int i=0; i

{

//char lstr,

hstr=str[i].toLatin1();

if(hstr == ' ')

{

i++;

continue;

}

i++;

if(i >= len)

break;

lstr = str[i].toLatin1();

hexdata = ConvertHexChar(hstr);

lowhexdata = ConvertHexChar(lstr);

if((hexdata == 16) || (lowhexdata == 16))

break;

else

hexdata = hexdata*16+lowhexdata;

i++;

senddata[hexdatalen] = (char)hexdata;

hexdatalen++;

}

senddata.resize(hexdatalen);

}

char MainWindow::ConvertHexChar(char ch)

{

if((ch >= '0') && (ch <= '9'))

return ch-0x30;

else if((ch >= 'A') && (ch <= 'F'))

return ch-'A'+10;

else if((ch >= 'a') && (ch <= 'f'))

return ch-'a'+10;

else return ch-ch;//不在0-f范围内的会发送成0

}同样的,也可以用类似的方法,将4个字节转化为对应的float数据

float MainWindow::qByteArraytofloat(QString qstr)

{

QByteArray byte;

StringToHex(qstr,byte);

float result;

memcpy(&result, byte.data(), 4);

return result;

}调用实例如下:

QString longitude = list[4];//"d0e1219827610040"

double longitude_rad = qByteArraytodouble(longitude);//2.04744

double longitude_deg = 180 * longitude_rad /M_PI;

longitude = QString::number(longitude_deg,10,8) + " deg";

ui->label_longitude->setText(longitude);

QString altitude = list[5];//"55fc6a40"

float altitude_m = qByteArraytofloat(altitude);//3.67165

altitude = QString::number(altitude_m,10,8) + " deg";

ui->label_altitude->setText(altitude);

标签:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】如何将域中的AD数据导入SharePoint

最近刚装好sharepoint2010&#xff0c;想要研究一下&#xff0c;第一件想做的事就是想把AD中的用户信息导入到SharePoint中。 那现在就来看看我是怎么操作的&#xff1a; 1.打开管理中心 sharepoint是通过“用户配置文件同步服务”来实现同步&#xff0c;所以第一步要开启这个…

Apsara Clouder专项技能认证:实现调用API接口

一.API 简介 1.API 的概念 API(Application Programming Interface应用程序编程接口)是一些预定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码或理解内部工作机制的细节 2.API 的特点 API 是一个明确定义的接口,可以为其…

druid加密mysql_Druid 数据库用户密码加密 代码实现

标签&#xff1a;druid-1.0.16.jar 阿里巴巴的开源数据连接池 jar包明文密码私钥(privateKey)加密加密密码加密密码公钥(publicKey)解密明文密码程序代码如下&#xff1a;package com.t1;import com.alibaba.druid.filter.config.ConfigTools;public class DruidTest {public s…

select switch语句总是搞混,总结如下

select switch语句总是搞混&#xff0c;总结如下 类C&#xff1a;c c c# java &#xff1a; 比较 switch(expression) { case constant-expression : statement(s); break; /* optional */ case constant-expression : statement(s); brea…

java路径怎么找_Java路径怎么找

有一种情况是装好java了&#xff0c;配置好java环境(在Linux里面比较复杂)了&#xff0c;但忘了路径了&#xff1f;&#xff01;解决&#xff1a;先要申明一下which java是定位不到安装路径的。which java定位到的是java程序的执行路径。网上的资料都是人云亦云&#xff0c;完全…

【转】什么是CORS

CORS 全称是跨域资源共享&#xff08;Cross-Origin Resource Sharing&#xff09;&#xff0c;是一种 AJAX 跨域请求资源的方式&#xff0c;支持现代浏览器&#xff0c;IE支持10以上。 CORS与JSONP的使用目的相同&#xff0c;但是比JSONP更强大。JSONP只支持GET请求&#xff0c…

java web 连接linux_如何将javaweb项目部署到linux下

以下是对将javaweb项目部署到linux下的方法进行了详细的分析介绍一般都在windows下开发的现在部署到linux下将项目达成war包(用eclipse项目右键>Export>选择war file)将tomcat(用winSCP当然你也可以用secureCRT用securCRT需要建立sftp(即上传文件的目录)用put tomcat命令…

第一节:复习委托,并且通过委托的异步调用开启一个新线程和异步回调、异步等待

一. 再谈委托 1. 委托是一个关键字为delegate的自定义类型&#xff0c;通过委托可以把方法以参数的形式传递给另外一个方法&#xff0c;实现插件式的开发模式&#xff1b; 同时调用委托的时候&#xff0c;委托所包含的所有方法都会被实现。 2. 委托的发展历史&#xff1a;new…

linux 修改 java 内存_Linux 和 Windows修改Java虚拟机内存大小

因为内存溢出问题1. Linux下直接修改%tomcat_home%/bin/catalina.sh文件在注释下紧接一行也就是脚本正文开始之前 加上Java_OPTS-server -Xms512m -Xmx1024m -XX:PermSize128m -XX:MaxPermSize512m如果报-x没有定义,则用declare -x JAVA_OPTS"-Xms512m -Xmx1024"初始…

第二节:深入剖析Thread的五大方法、数据槽、内存栅栏

一. Thread及其五大方法 Thread是.Net最早的多线程处理方式&#xff0c;它出现在.Net1.0时代&#xff0c;虽然现在已逐渐被微软所抛弃&#xff0c;微软强烈推荐使用Task(后面章节介绍)&#xff0c;但从多线程完整性的角度上来说&#xff0c;我们有必要了解下N年前多线程的是怎么…

java redis 生成唯一id_Redis在集群环境中生成唯一ID

概述设计目标&#xff1a;每秒最大生成10万个ID&#xff0c;ID单调递增且唯一。Reidis可以不需要持久化ID。要求:集群时钟不能倒退。总体思路&#xff1a;集群中每个节点预生成生成ID&#xff1b;然后与redis的已经存在的ID做比较。如果大于&#xff0c;则取节点生成的ID&#…

java 读取 image_如何在java读取sql里头读取image格式的数据转换成图片格式

一、北亚文件系统数据恢复Windows版可以恢复Windows用户在使用过程中丢失的数据(误删除文件、误格式化硬盘、U盘/手机存储卡数据丢失、误清空回收站、磁盘分区消失)。软件操作简单&#xff0c;易用。可恢复故障&#xff1a;误删除文件&#xff1a;1&#xff1a;可只恢复指定路径…

java await signal_【Java并发008】原理层面:ReentrantLock中 await()、signal()/signalAll()全解析...

一、前言上篇的文章中我们介绍了AQS源码中lock方法和unlock方法&#xff0c;这两个方法主要是用来解决并发中互斥的问题&#xff0c;这篇文章我们主要介绍AQS中用来解决线程同步问题的await方法、signal方法和signalAll方法&#xff0c;这几个方法主要对应的是synchronized中的…

java 抽象类构造函数_抽象类可以有构造函数吗?

是的&#xff0c;抽象类可以有构造函数。考虑到这一点&#xff1a;abstract class Product {int multiplyBy;public Product( int multiplyBy ) {this.multiplyBy multiplyBy;}public int mutiply(int val) {return multiplyBy * val;}}class TimesTwo extends Product {publi…

java 动态生成证书_android平台使用java动态生成公私钥,并导出证书文件

不依赖keytool工具&#xff0c;指令生成证书库&#xff0c;而是java代码生成&#xff0c;且导出到证书文件中。直接上代码&#xff1a;证书工具类&#xff1a;package com.daobo.security.utilsimport com.daobo.security.bean.Certificationimport org.bouncycastle.jce.provi…

第八节:Task的各类TaskTResult返回值以及通用线程的异常处理方案

一. Task的各种返回值-Task<TResult> PS&#xff1a; 在前面章节&#xff0c;我们介绍了Task类开启线程、线程等待、线程延续的方式&#xff0c;但我们并没有关注这些方式的返回值&#xff0c;其实他们都是有返回值的Task<TResult>&#xff0c;然后可以通过Task的…

mysql profile 导出_MySQL数据的导出和导入工具:mysqldump_MySQL

mysqldump导出要用到MySQL的mysqldump工具&#xff0c;基本用法是&#xff1a;shell> mysqldump [OPTIONS] database [tables]如果你不给定任何表&#xff0c;整个数据库将被导出。通过执行mysqldump --help&#xff0c;你能得到你mysqldump的版本支持的选项表。注意&#x…

mysql2005触发器修改成绩_创建、更改和删除触发器

创建、更改和删除触发器Creating, Altering, and Removing Triggers08/06/2017本文内容适用于&#xff1a;Applies to: SQL ServerSQL Server(所有支持的版本)SQL ServerSQL Server (all supported versions) Azure SQL 数据库Azure SQL DatabaseAzure SQL 数据库Azure SQL Dat…

第一节:从面向对象思想(oo)开发、接口、抽象类以及二者比较

一. 面向对象思想 1. 面向过程&#xff08;OP&#xff09;和面向对象&#xff08;OO&#xff09;的区别&#xff1a; (1)&#xff1a;面向过程就是排着用最简单的代码一步一步写下去&#xff0c;没有封装&#xff0c;当业务复杂的时候&#xff0c;改动就很麻烦了 (2)&#xff…

业务异常 java_谈谈RxJava处理业务异常的几种方式

此文介绍了RxJava处理业务异常的几种方式&#xff0c;分享给大伙。具体如下&#xff1a;关于异常Java的异常可以分为两种&#xff1a;运行时异常和检查性异常。运行时异常&#xff1a;RuntimeException类及其子类都被称为运行时异常&#xff0c;这种异常的特点是Java编译器不去…