• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

delphi中将4个Byte合成1个Integer的五种方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请


 

//方法 1: 共用内存procedure TForm1.Button1Click(Sender: TObject);
var
bf: record b1,b2,b3,b4: Byte end;

i: Integer absolute bf;
begin
bf.b1 := $CC;

bf.b2 := $DD;

bf.b3 := $EE;

bf.b4 := $FF;

ShowMessageFmt('%x', [i]);

//FFEEDDCC
end;
//方法 2: 位运算procedure TForm1.Button2Click(Sender: TObject);
var
i: Integer;
begin
i := $CC or ($DD shl 8) or ($EE shl 16) or ($FF shl 24);//不用括号也可
ShowMessageFmt('%x', [i]);

//FFEEDDCC
end;
//方法 3: 使用函数procedure TForm1.Button3Click(Sender: TObject);
var
i: Integer;
begin
i := MakeLong(MakeWord($CC,$DD),
MakeWord($EE,$FF));

ShowMessageFmt('%x', [i]);

//FFEEDDCCend;
//方法 4: 从静态数组...procedure TForm1.Button4Click(Sender: TObject);
var
bs: array[0..3] of Byte;

P: PInteger;
begin
bs[0] := $CC;

bs[1] := $DD;

bs[2] := $EE;

bs[3] := $FF;

P := @bs;

ShowMessageFmt('%x', [P^]);

//FFEEDDCC
end;
//方法 5: 从动态数组...procedure TForm1.Button5Click(Sender: TObject);
var
bs: array of Byte;

P: PInteger;
begin
SetLength(bs, 4);

bs[0] := $CC;

bs[1] := $DD;

bs[2] := $EE;

bs[3] := $FF;

P := @bs[0];

ShowMessageFmt('%x', [P^]);

//FFEEDDC
Cend;

 

-------------------------------------------------------------------------------
1.可以直接Copymemory或者Move
2.可以用变体类型的结构体.
type
   TWordOfInt = array[0..2-1] of WORD;
   TByteOfInt = array[0..4-1] of Byte;
   TIntRec = packed record //定义一个辅助类型,这样转换非常快,而且方便
     case Integer of
       0: (IntValue: Integer);
       1: (Low, High: Word);
       2: (Words: TWordOfInt);
       3: (Bytes: TByteOfInt);
   end;

//方法一,借助TIntRec,来转换
var
   Int : Integer;
   Bytes : TByteOfInt;
begin
   int := 100;

   Bytes := TIntRec(int).Bytes;//integer转字节数组
   Int :=  TIntRec(Bytes).IntValue; //Byte数组转Integer

end;

//方法二, 直接用TIntRec,不转换.根本不耗费一点点CPU的时间
var
   value : TIntRec;
begin
   value.IntValue := 100; //看成Integer
   //下面是看成Byte数组用
   value.Bytes[0] := 1;
   value.Bytes[1] := 1;
   value.Bytes[2] := 1;
   value.Bytes[3] := 1;
end;

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
用Delphi编写ASP的ActiveX发布时间:2022-07-18
下一篇:
DELPHI实现键盘勾子发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap