将四个BYTE数值转换成IEEE754标准的浮点数

在工作中,经常使用到IEEE754格式的数据。IEEE754格式的数据占四个字节,好像Motorola格式和Intel格式的还不一样。

由于工作中很少和他打交道(使用的软件内部已经处理),就没太在意。

今天在编程时发现需要把四个BYTE类型的数据转换成IEEE754标准的数据,就编了一个函数处理一下。

 

 1  unit  Unit2;
 2 
 3  interface
 4 
 5  uses
 6    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 7    Dialogs, StdCtrls;
 8 
 9  type
10    TForm2  =   class (TForm)
11      edt1: TEdit;
12      edt2: TEdit;
13      edt3: TEdit;
14      edt4: TEdit;
15      edt5: TEdit;
16      btn1: TButton;
17       procedure  btn1Click(Sender: TObject);
18     private
19       {  Private declarations  }
20     public
21       {  Public declarations  }
22     end ;
23 
24  var
25    Form2: TForm2;
26 
27  implementation
28 
29  { $R *.dfm }
30  { 将四个BYTE转换成IEEE754格式的数据 }
31  function  PackByteToFloat(byte1,byte2,byte3,byte4:byte):Single;
32  var
33    input: array [ 1 .. 4 of  byte;  { 定义一个数组存放输入的四个BYTE }
34    output:PSingle;
35  begin
36    input[ 1 ] : =  byte1;
37    input[ 2 ] : =  byte2;
38    input[ 3 ] : =  byte3;
39    input[ 4 ] : =  byte4;
40    output : =  Addr(input);   { 使用取地址的方法进行处理 }
41    Result : =  output^;       { 得到了intel格式的数据 }
42  end ;
43 
44  procedure  TForm2.btn1Click(Sender: TObject);
45  var
46    byte1,byte2,byte3,byte4:byte;
47 
48  begin
49    byte1 : =  StrToInt(edt1.Text);
50    byte2 : =  StrToInt(edt2.Text);
51    byte3 : =  StrToInt(edt3.Text);
52    byte4 : =  StrToInt(edt4.Text);
53 
54    edt5.Text : =  FloatToStr(PackByteToFloat(byte1,byte2,byte3,byte4));
55 
56  end ;
57 
58  end .
59 

 

 

 

{☆推荐☆:返利网,你网上购物,我返给您现金,实惠!省钱新门道}

 

转载于:https://www.cnblogs.com/dabiao/archive/2010/02/20/1669842.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值