取数的位(100分)

  • 主题发起人 主题发起人 我心飞翔
  • 开始时间 开始时间

我心飞翔

Unregistered / Unconfirmed
GUEST, unregistred user!
假如有一数据123(integer或String),我怎么取得这个数的高6位和低4位?
 

function GetHi6ofInt( value: integer ): integer;
begin
Result := (value and $000000FC) shr 4;
end;

function GetLo4ofInt( value: integer ): integer;
begin
Result := (value and $0000000F);
end;
 
同意楼上,补充一下:
字符串后4位:
function GetLo4ofStr( s:string): integer;
begin
Result := ord(s[Length(s)]);
end;
字符串前6位:
function GetHi6ofStr( s:string): integer;
begin
Result := (ord(s[Length(1)]) shl 2) + (ord(s[length(2)]) shr 2);
end;
 
谢谢各位。还有一个问题:
一个Byte就是D7=0,D6=1,D5至D0是由一个数的高6位组成,请问怎样把它组成一个Byte?
 
01000000 or GetHi6ofStr( )
 
var
a,b:byte;
begin
a=$40 OR (b AND $3F);

end;

 
还是不行。
 
呀,抱歉!
应该是
var
a,b:byte;
begin
a=$40 OR (b shr 2);

end;
 
多人接受答案了。
 
后退
顶部