设HexChar为当前一个16进制的字符转为一串二进制串,那个16进制字符串转二进制就不用说了吧,
Function HToB(a:Char):String;
var DivLeft : integer;
HexChar : Char;
ResultStr : string; //反回的二进制串
begin
HexChar := a; //'E';
//首先将它转化为十进制
if (HexChar >#47) and (HexChar <#58) then
DivLeft:=Ord(HexChar )-48
else if (HexChar >#64) and (HexChar<#71) then
DivLeft:=Ord(HexChar )-65 + 10;
ResultStr :='';
repeat
if odd(DivLeft) then
ResultStr :='1'+ResultStr
else
ResultStr :='0'+ResultStr;
DivLeft:=DivLeft div 2;
until (DivLeft=0) and (length(ResultStr)=4);
result := resultstr;
showmessage(resultstr);//resultstr 就是转化出来的二进制了
end;
至于是一个16进制的字符串,你用一个循环就行了
var Count : integer;
s : string;
Hstr : String; //hstr为一连串的十六进制
begin
Hstr := 'A568DF';
s:='';
for Count:=1 to length(Hstr) do
s:=s+HToB(HexNr[Count]);
showmessage(s);
end;
OK了,你再调试一下,看有什么问题,重点就在于十进制转二进制那部分