壹、單精度浮點數符合IEEE754標準,32位,前面第壹位是符號位,接下來的8位是指數,最後23位是尾數。編程中了解這些就夠了,轉換方法如下:
二、VB中轉換示例:
VB浮點數轉換程序
OptionExplicit'利用函數CopyMemory轉換
PrivateDeclareSubCopyMemoryLib"kernel32"Alias"RtlMoveMemory"(DestinationAsAny,SourceAsAny,ByValLengthAsLong)
DimFAsSingle'十進制數
DimA(3)AsByte'16進制浮點數
PrivateSubCommand1_Click()'轉換為十進制數
A(0)=CLng("&H"&Text1(3).Text)'16進制字符轉數字
A(1)=CLng("&H"&Text1(2).Text)
A(2)=CLng("&H"&Text1(1).Text)
A(3)=CLng("&H"&Text1(0).Text)
CopyMemoryF,A(0),4'轉換
Text2.Text=F'顯示結果
EndSub
PrivateSubCommand2_Click()'轉換為浮點數格式
F=Val(Text2.Text)'十進制字符轉數字
CopyMemoryA(0),F,4'轉換
Text1(0).Text=IIf(A(3)>15,Hex(A(3)),"0"&Hex(A(3)))'顯示結果
Text1(1).Text=IIf(A(2)>15,Hex(A(2)),"0"&Hex(A(2)))
Text1(2).Text=IIf(A(1)>15,Hex(A(1)),"0"&Hex(A(1)))
Text1(3).Text=IIf(A(0)>15,Hex(A(0)),"0"&Hex(A(0)))
EndSub
擴展資料:
C中轉換示例:
unionsf
{
floatf;
unsignedchars[4];
}a;
floatm;
unsignedchart[4]
//轉換為十進制數
a.s[0]=0x51;//低位在前
a.s[1]=0x06;
a.s[2]=0x9E;
a.s[3]=0x3F;
m=a.f;
//轉換為浮點數格式
a.f=m;
t[0]=a.s[0];
t[1]=a.s[1];
t[2]=a.s[2];
t[3]=a.s[3];