对位操作。 ( 积分: 50 )

  • 主题发起人 主题发起人 cjsam
  • 开始时间 开始时间
C

cjsam

Unregistered / Unconfirmed
GUEST, unregistred user!
一直对位的操作都很迷糊,请问这样一个问题。
得到一个Longint类型的数,将它的高16位和低16位按照无符号整数进行位置对调,生成一个新的longint数,这个怎样来做呀?应该很简单,
例如: source,des:Longint;
取高位:HiByte(source)取低位LoByte(source),这样对吗 ?
怎样把合成des的值呢?
 
可以使用函数:
MakeLong
MakeWord
自己移位也行
 
des:=(source shr 16)+(source shl 16);
 
des := (source shr 16) or (source shl 16);
 
function IntHighToLow(Value:DWORD):DWORD;
type Ta=record a1,a2,a3,a4:byte
end;
var
a,b:Ta;
begin
//方法1
//aa[0]:=char(Hi(HIWORD(TTL)));
//aa[1]:=char(Lo(HIWORD(TTL)));
//aa[2]:=char(Hi(LOWORD(TTL)));
//aa[3]:=char(Lo(LoWord(TTL)));
//方法2
a:=Ta(Value);
b.a1:=a.a4;
b.a2:=a.a3;
b.a3:=a.a2;
b.a4:=a.a1;
Result:=DWORD(B);
end;
 
后退
顶部