有4个字节类型的值,用移位或逻辑运算符怎么合成一个整数?
比如 $FFEEDDCC。

$FF
$EE
$DD
$CC


//方法 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;

delphi中将 4 个 Byte 合成 1 个 Integer 的五种方法的更多相关文章

  1. ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)

    http://www.cnblogs.com/zyqgold/archive/2010/11/22/1884779.html 在ASP.NET MVC框架中,将视图中的数据传递到控制器中,主要通过发送 ...

  2. delphi中将一个ADOQuery查询的数据结果传递给一个动态生成的ADOQuery

    delphi中将一个ADOQuery查询的数据结果传递给一个动态生成的ADOQuery 2010-03-10 17:35 方法一: beginADOQuery:=TADOQuery.Create(Ap ...

  3. 2015.1.25 Delphi打开网址链接的几种方法

    Delphi打开网址链接的几种方法1.使用shellapi打开系统中默认的浏览器              首先需在头部引用 shellapi单元即在uses中添加shellapi,这里我们需要知道有 ...

  4. Delphi中弹出提示框的四种方法

    参考:http://blog.itpub.net/8432156/viewspace-924843/ 更为详细的内容请参见:http://blog.csdn.net/akof1314/article/ ...

  5. 【转】delphi程序只允许运行一个实例的三种方法:

    一.        创建互斥对象 在工程project1.dpr中创建互斥对象 Program project1 Uses Windows,Form, FrmMain in 'FrmMain.pas' ...

  6. [转]Delphi调用cmd的两种方法

    delphi调用cmd的两种方法vars:string;begins:='cmd.exe /c '+edit1.Text+' >c:\1.txt';winexec(pchar(s),sw_hid ...

  7. Delphi Windows API判断文件共享锁定状态(OpenFile和CreateFile两种方法)

    一.概述 锁是操作系统为实现数据共享而提供的一种安全机制,它使得不同的应用程序,不同的计算机之间可以安全有效地共享和交换数据.要保证安全有效地操作共享数据,必须在相应的操作前判断锁的类型,然后才能确定 ...

  8. 让程序只运行一个实例(Delphi篇)(三种方法,其中使用全局原子的方法比较有意思)

    Windows 下一个典型的特征就是多任务,我们可以同时打开多个窗口进行操作,也可以同时运行程序的多个实例,比如可以打开许多个资源管理器进行文件的移动复制操作.但有时出于某种考虑(比如安全性),我们要 ...

  9. 在Delphi中使用C++对象(两种方法,但都要改造C++提供的DLL)

    Delphi是市场上最好的RAD工具,但是现在C++占据着主导地位,有时针对一个问题很难找到Delphi或Pascal的解决方案.可是却可能找到了一个相关的C++类.本文描述几种在Delphi代码中使 ...

随机推荐

  1. Hive官方文档

    Hive官方文档     内容列表 Cloudera制作的Hive介绍视频 安装与配置 系统需求 安装Hive发行版 从Hive源码编译 运行Hive 配置管理概览 运行时配置 Hive, Map-R ...

  2. 使用charles进行https抓包

    一.charles电脑端设置 1.在Charles的菜单栏上选择"Proxy"->"Proxy Settings",填入代理端口8888(这个端口不一定填 ...

  3. 详细的Windows下安装 binwalk

    1. https://github.com/ReFirmLabs/binwalk到这里下载binwalk,下载后解压. 2. 找到下载后的文件夹, 在这里要进行安装步骤,一边按着shift,一边按着鼠 ...

  4. Postgresql 查看建表语句 命令

    pg_dump -U username databasename -W -s -t tablename -s, --schema-only 只转储模式, 不包括数据 -t, --table=TABLE ...

  5. 设计模式之迭代器模式 Iterator

    代码实现 public interface MyIterator { void first(); //将游标指向第一个元素 void next(); //将游标指向下一个元素 boolean hasN ...

  6. UVALive 5099 Nubulsa Expo 全局最小割问题

    B - Nubulsa Expo Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit S ...

  7. BZOJ-2618 [CQOI2006]凸多边形

    半平面交模版题.. #include <cstdlib> #include <cstdio> #include <cmath> #include <cstri ...

  8. nodeJS(2)深了解: nodeJS 项目架构详解(app.js + Express + Http)

    简略了解:nodeJS 深了解(1): Node.js + Express 构建网站预备知识 环境: 环境: win7 + nodeJS 版本(node): 新建 nodeJS 项目: 名称为: te ...

  9. nodeJS学习(5) --- sublime Text3 安装使用

    本节对对工具 sublime Text3 的安装进行简介. 主要参考网址:http://blog.csdn.net/sam976/article/details/52076271   http://w ...

  10. 设置Animation 的播放位置

    AnimationState.normalizedTime 官方文档的描述 Description The normalized time of the animation. A value of 1 ...