如果我在Delphi中有两个字节变量:
var
b1,b2,result:byte;
begin
b1:=$05;
b2:=$04;
result:=??? // $54
end;
然后我如何将两者结合起来产生一个值为$54
的字节?
答案 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。它是一种简单的内联方法,甚至不会产生调用。