问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么将4字节16进制转化成浮点数

发布网友 发布时间:2022-04-24 13:21

我来回答

5个回答

热心网友 时间:2022-07-14 04:14

四个字节的十六机制数组转浮点数:

byte[bytes=newbyte[4];

BitConverter.ToSingle(bytes,0)。

四字节16进制数可转换为四个二进制字节(Bytes),从而使用Api函数来处理成单精度浮点数。以下用VB代码处理。

VB有专门的API函数CopyMemory能处理2-10进制浮点数转换和10-2进制浮点数转换。

扩展资料

例:

char p[4] = {0x1e,0x0d,0xa8,0x3c}; 转换成浮点数:0.0205140,还有如何判断,这四个十六进制转换成浮点数是正数还是负数。

#include <stdio.h>

int main(void)

{float a=0.0f;unsigned char * b 

= (unsigned char*)&a;

 char c[4] = {0x1e,0x0d,0xa8,0x3c}; 

 int i = 0;

//printf("b1:%d\n",b);

 for(i = 0; i<4; i++){ b[i] 

= (unsigned char)c[i]; }

//printf("b2:%d\n",*b);

 printf("结果为:\n");

printf("%f\n", a);

//printf("a:%d\n",a)

热心网友 时间:2022-07-14 04:15

  四字节16进制数可转换为四个二进制字节(Bytes),从而使用Api函数来处理成单精度浮点数。

  以下用VB代码处理。
  VB有专门的API函数CopyMemory能处理2-10进制浮点数转换和10-2进制浮点数转换。
  下列代码演示了10进制Single(单精度浮点型转为16进制字符显示的浮点数和其相反运算:
  Option Explicit
  Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  Private Sub BinToSin_Click()
  Dim sinStr As String
  Dim sinSj As Single
  Dim Buffer(3) As Byte
  Dim i As Integer
  sinStr = Text2
  For i = 1 To Len(Text2) Step 2
  Buffer((7 - i) / 2) = Val("&H" & Mid(sinStr, i, 2))
  Next
  CopyMemory ByVal VarPtr(sinSj), ByVal VarPtr(Buffer(0)), 4
  Text3 = sinSj
  End Sub
  
  Private Sub SinToBin_Click()
  Dim i As Integer
  Dim hexData As String
  Dim a As Single
  Dim Buffer(3) As Byte
  a = Val(Text1)
  CopyMemory Buffer(0), a, 4
  For i = 0 To 3
  If Len(Hex(Buffer(i))) = 1 Then
  hexData = "0" & Hex(Buffer(i)) + hexData
  Else
  hexData = Hex(Buffer(i)) + hexData
  End If
  Next
  Text2 = hexData
  End Sub
  需要注意的事项是这四字节的高低字节排序,不能搞错。
  VB的Single 数据类型:
  Single(单精度浮点型)变量存储为 IEEE 32 位(4 个字节)浮点数值的形式,它的范围在负数的时候是从 -3.402823E38 到 -1.401298E-45,而在正数的时候是从 1.401298E-45 到 3.402823E38。Single 的类型声明字符为感叹号 (!)。
  在内存以32位二进制形式存在:
  XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
  第1位为符号位;
  第2-9位为阶码位;
  第10-32位为2进制小数尾值;
  即F2 ^ n * 1. XXXXXXX XXXXXXXX XXXXXXXX;
  其中,F为正号或负号(首为为0正数,首位为1负数;
  n为2-9位组成的BYTE数据值;
  XXXXXXX XXXXXXXX XXXXXXXX为尾数。
  参考:http://blog.csdn.net/zdingyun/article/details/2528026

热心网友 时间:2022-07-14 04:15

上面提供的方法((float)i;)都存在一个问题,即只是把整数强制转换为浮点数罢了,并不能解决楼主关心的问题。

有个简单的办法:

DWORD dwValue = 0xC2C7FAE1;
float fValue;

memcpy(&fValue, &dwValue, sizeof(DWORD));

printf("%f\n", fValue);

热心网友 时间:2022-07-14 04:16

int main()
{
int i = 0xC2C7FAE1;
float f = (float)i;// 就这样转换就行了。

return 0;
}

估计你的问题没说清楚,应该没那么简单的。
有问题再问,QQ:183323023

热心网友 时间:2022-07-14 04:16

int i = 0xC2C7FAE1;
float f = (float)i
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
父母离异的话,会不会导致孩子心智不成熟? 过节 公司给我们发的购物卡 这个怎么做分录 属于福利费吗 需要计提吗... 乡村振兴公务员和省考公务员有什么区别 ...小时候跟着爷爷学国画书法,小受家是农村的,小受姓夏或叶,他带着他... 瑞麒X1安全装置 瑞麒X1的舒适型和豪华型有什么区别?配置有哪些不同的地方?这5000块多在... 瑞麒X1的安全性能方面配置如何? 脚崴了 有大量於血 怎么样才能快速消肿 脚崴了外侧出现瘀血浮肿怎么消除? ...换了我喜欢的发型,但是穿了件有点透明的衣服,可以看到肩_百度... 学生会摄影部主要负责什么工作? 如何在Byte 和 Hex 之间相互转换,在线等 如何提升工作效率 java byte转换成字符串? 中国影响力最大的摄影大赛和海报设计大赛名单、参赛条件、比赛时间 如何提高工作效能 作为管理者如何提高员工工作效率? C# Byte[]转换成string的问题...高手来起...在线=回答... 每天的工作都很繁琐,该如何有效的提高工作效率呢? 求教String转换为byte类型十六进制数,在线等 如何在工作中提高自己的工作效率? C# 字符如何转变为字节,在线等 很急 谢谢 在线等!!!java 如何将字符串转换成十六进制? 字节和G怎么换算? 十六进制到字节的转换 字节,b,KB,GB怎么换算的 四川成都将于29日启动臭氧黄色预警,这意味着什么? 嗯我想我的位置在不断地移动能不能够这样才能够收到实时实地的天气预报 今天郫都区会下新民场镇会下雨吗 2o20年6月11号郫都区现在在下雨吗? 黑天工作室的团队介绍 文晖中学的所获荣誉 1 byte 等于多少KB 、、24969192813byte 等于多少G? 在线等! 如何提高公司的工作效率 为什么电竞行业幕后工作者没有职业选手赚得多,比如程序员,平面海报设计,产品宣传策划,摄影、赛事执行 如何提高工作效率 提高工作效率的方法技巧 用图怪兽设计了一个海报,字体是图怪兽的。拿去参加一个海报设计比赛,需要支付版权费吗? 大学宣传部能举办一些什么特色活动 什么叫景别 , 景别又有哪几种。 什么是景别? 什么是景别,拍摄人物时,远、全、中、近、特景如何拍摄? 拍人像的5种景别构图方法? 镜头的景别有哪些?它们各自的表意特点是什么 景别镜头有哪些?是怎么运用的? 人像摄影景别问题,人像切到哪里? 景别的9种分类是什么? 景别是一种摄像的方式,有特写,近景,远景,全景,请问一下如何用景别来描述一个人的一生? 摄影如何选择合适景别? 两人全身对话通常什么景别 人像摄影大体分为哪三种类型