以下用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