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

来源:百度知道 编辑:UC知道 时间:2024/05/26 04:25:53
VC 和VB 里是怎么处理的 比如我有个16进制数0xC2C7FAE1,怎么转化为浮点数,要提供程序例子,VB和VC的都可以,提供一样给100分,谢谢

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

有个简单的办法:

DWORD dwValue = 0xC2C7FAE1;
float fValue;

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

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

  四字节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
  <