如何在十六进制中按位取数?(100分)

  • 主题发起人 主题发起人 lycok
  • 开始时间 开始时间
L

lycok

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi中如何在十六进制中按位取数,如a9是10101001,我要把它取成10,10,10,01,
而且要把它们变成字符'10','10','10','01',怎么办?
 
先变成字符串,然后分割:
var
s: string;
begin
s := IntToHex($A9, 8);
ShowMessage(Copy(s, 1, 2));
ShowMessage(Copy(s, 3, 2));
ShowMessage(Copy(s, 5, 2));
ShowMessage(Copy(s, 7, 2));
end;
 
没用啊,照你的方法,除了四个提示框,分别提示'00','00','00','a9',可是我要取得是
'10','10','10','01',我的要求你没达到啊
 
sorry, 看错了,你要的是二进制表示。
同样的道理,先转化为二进制内容的字符串,然后分割
转二进制的函数我没有,等一下吧,很多人知道的:)
 
将十六进制A9转换为十进制,再转换为二进制字符串
如:
...............
AA:integer;
MyStr:String;
...........
AA:= StrToIntDef('$a9', 32)
myStr:=IntToBin(AA,7); //你要8为,就输7

得到字符串后再处理,处理方法就不多说了用Copy就可以。


function IntToBin(Value: LongInt; Size: integer): string; //十进制To二进制
var
i: integer;
begin
result := '';
for i := Size downto 0 do
if Value and (1 shl i) <> 0 then
result := result + '1'
else
result := result + '0';

end;
 
十六到十
s:='$'+s;
i:=strtoint(s)
十到二
function inttobin(value:longint;size:integer):string;
var
i:integer;
begin
result:='';
for i:=size downto 0 do
begin
if value and( 1 shl i)<>0 then
begin
result:=result+'1';
end else
result:=result+'0';
end;

var
s:array[0..3] of string;
for i:=0 to 3 do
s:=copy(s,i*2,2);
 
谢谢各位了!!在此奉上一点薄礼
 
后退
顶部