在delphi中组合两个字节

时间:2016-07-13 09:18:26

标签: delphi

如果我在Delphi中有两个字节变量:

var 
    b1,b2,result:byte;
begin
    b1:=$05;
    b2:=$04;
    result:=??? // $54
end;

然后我如何将两者结合起来产生一个值为$54的字节?

2 个答案:

答案 0 :(得分:3)

最简单的方法是

result := b1 * $10 + b2

"高级"方式:

result := b1 shl 4 + b2

答案 1 :(得分:1)

最好的方法是:

interface

function combine(a,b: integer): integer; inline;  //allows inlining in other units

implementation

function combine(a,b: cardinal): cardinal; inline;
begin
  Assert((a <= $f));
  Assert((b <= $f));
  Result:= a * 16 + b;
end;

由于partial register stalls,使用字节寄存器会降低处理器的速度 断言将在发布模式中消除。

如果表现问题从不使用除整数(或红衣主教)以外的任何东西。

我不知道为什么人们会谈论VMT或dll。它是一种简单的内联方法,甚至不会产生调用。