十六进制转double
要明白如何将十六进制转换为float或double,需要了解浮点数的二进制存储和转换方式。float和double在存储方式上都遵从IEEE的规范,且float遵从IEEE R32.24,而double遵从R64.53。具体转换规则可以参考http://www.cnblogs.com/dolphin0520/archive/2011/10/02/2198280.html。
按照转换规则,写出HexToFloat和HexToDouble代码如下(buf指向的Hex已经进行高低地址转换):
//将字节中pos位置开始的len位的二进制数转换为整数
unsigned int getbitu(const unsigned char *buff, int pos, int len)
{unsigned int bits=0;int i;for (i=pos;i<pos+len;i++){bits=(bits<<1)+((buff[i/8]>>(7-i%8))&1u); //从高位到低位逐位计算}return bits;
}float HexToFloat(const unsigned char *buf)
{float value = 0.0;unsigned int i = 0;unsigned int num, temp;int num2;bool flags1 = true;num = getbitu(buf, i, 1); //标志位i = i + 1;
//指数部分,float型数据其规定偏移量为127,阶码有正有负,对于8位二进制,则其表示范围为-128-127num2 = getbitu(buf, i, 8) - 127;i = i + 8;while(1){if(flags1){value += 1 * pow(2, num2);num2--;flags1 = false;}temp = getbitu(buf, i, 1);i += 1;value += temp * pow(2, num2);num2--;if(i == 32)break;}if(num == 1)value *= -1;return value;
}double HexToDouble(const unsigned char* buf)
{double value = 0;unsigned int i = 0;unsigned int num,temp;int num2;bool flags1 = true;num = getbitu(buf,i,1); //标志位 i += 1;
//double型规定偏移量为1023,其表示范围为-1024-1023num2 = getbitu(buf,i,11) - 1023; i += 11; while(1){if(flags1){flags1 = false;value += 1 * pow(2,num2); num2--;}temp = getbitu(buf,i,1); i += 1;value += temp * pow(2,num2); num2--;if(i == 64)break;}if(num == 1)value *= -1;return value;
}
十六进制转double相关推荐
- c语言占八个字节的浮点数是,『double转八字节十六进制』double占8字节 一个数字占1字节 为什么能精确16位 我觉得只有8位,,,...
C# 的double类型的10进制 转化成 字符串的 2进制和16进制的问题 先转换成字组,然后再转成2进制和16进制格字符串XSf道家风水传承网double x = 3.14d;XSf道家风水传承网 ...
- java中表示二进制、八进制、十进制、十六进制,double、float、整型
java里不能这样表示二进制,只能是 8,10,16进制 8: 前置 0 10: 不需前置 16: 前置 0x 或者 0X double:2 ...
- Java 中各数字类型(Double, Float, Long, Integer) 之间以及字符串之间的转换
1. 数字类型间的转换 类型 double, float, long, int 都是 Java 中原始的数字类型. Java 提供了这原始类型的包装类, 并提供了一些便于使用的方法比如类型的转换, 通 ...
- 颜色代码六位十六进制字符_8位十六进制颜色
颜色代码六位十六进制字符 One of the most requested capabilities in my early days of web development was the abil ...
- UR机器人数据包解析(python与C++实现)
一.与UR机器人进行通讯 如果还没有完成电脑与UR机器人的通讯,可以参考这个博客(https://blog.csdn.net/qq_41685265/article/details/104327982 ...
- JAVA程序开发参考手册
<!--包装数据类型 ->//javalangInteger--整数类 //bitCount方法--获取二进制补码中位的数量 int i = 10;int count = Integer. ...
- 第十七章:掌握网格(七)
响应方向变化 应用程序页面的布局通常与特定的外形和宽高比紧密相关.有时,应用程序将要求仅在纵向或横向模式下使用它.但是,当手机改变方向时,应用程序通常会尝试在屏幕上移动. 网格可以帮助应用程序适应方向 ...
- C语言:十六进制(HEX)和浮点类型(float、double)转换
目录 1.浮点类型转换为十六进制 方法1:用地址用指针 方法2:用共用体 方法3: 使用memcpy 2.十六进制转换为浮点类型 近日在研究Modbus协议的时候遇到这样一个情况:使用ModScan3 ...
- Java类型转换工具类(十六进制—bytes互转、十进制—十六进制互转,String—Double互转)
/*** 数据类型转换工具类* @author cyf**/ public class NumConvertUtil{/*** bytes 转16进制字符串* @param bArray* @retu ...
最新文章
- SAP Promotion Managementfor Retail (SAP PMR)
- 树莓派被曝开春上市,估值高于5亿美元,收入主要来源于生产版权费
- maven之build resources resource 详细介绍
- Dynamics CRM 注册插件dll到GAC
- Python获取本机所有IP地址
- tessnet2 在vs2010 及以上版本不能调用的解决方案
- Python实现同义词替换(哈工大pyltp分词)
- unity tier setting
- HDU 4054 Hexadecimal View
- mp4parser库
- 最简单最明白的关于“事件”和“委托”的例子说明
- java 队列线程池_Java线程池Executor使用
- 让机器人懂感情:表情符与深度学习
- springboot项目打jar包跳过单元测试test
- 2010十大网络工具绿色版下载热门推荐(非常好用)
- 三十五、jQuery(JavaScript 库)
- c语言——游戏思路及其相关函数
- iPhone回收中这样看划痕就不会被压价了
- Linux任务之自动发邮件
- HTML易烊千玺网页,易烊千玺弟弟破世界纪录,被扒两天就被人打破,认证网站遭质疑...
热门文章
- 另存为常用位置设置 1.0 绿色版
- 此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求。...
- HDU 2115 -I Love This Game
- SharePoint 2007 开发系列(14) 调试sharepoint web part
- 微信小程序学习日记day1
- 详细记录如何在跨域请求中携带cookie
- Java黑皮书课后题第10章:**10.9(Course类)如下改写Course类
- Java黑皮书课后题第5章:*5.48(处理字符串)编写一个程序,提示用户输入一个字符串,显示奇数位置的字符
- Java黑皮书课后题第5章:*5.18(使用循环语句打印4个图案)使用嵌套的循环语句,编写4个独立的程序打印下面的图案
- mysql mariadb nodejs_Nodejs中使用mariadb库连接MySQL数据库