小弟这里要将一个16进制数转换为2进制数,然后取二进制数中的一位值进行操作。
形如:a:byte;   a:=$FF;  b:string;
找了个函数 function HexToBin(sHex:string):string;
调用后 b:=HexToBin(inttohex(a));   b:='11111111';现在我想取b中的每一位的值判断,进行相应的操作。
请大家指教一下,谢谢!

解决方案 »

  1.   

    直接使用位操作就可以了啊,没必要用这些函数吧!看看下面代码:
    procedure TForm1.Button1Click(Sender: TObject);
    var i,a:byte;
    begin
    a:=strtoint(edit1.Text);
      for i:=0 to 7 do
      if (a and (1 shl i))<>0 then
           showmessage(inttostr(i+1)+'位是1')
      else
        showmessage(inttostr(i+1)+'位是0');
    end;
      

  2.   

    A      : byte;
    SplitA : array [0..7] of byte;
    i      : integer;
    ...i:=0;
    while(i<=7)
    begin
      SplitA[i]:=a mod 2; //取模的结果是当前的最低位的值
      A:=A shr 1;         //右移操作相当于a/2
      inc(i);
    end;
    ...