求能将十六进制和二进制相互转换的函数... ( 积分: 10 )

  • 主题发起人 主题发起人 sxwy
  • 开始时间 开始时间
S

sxwy

Unregistered / Unconfirmed
GUEST, unregistred user!
求能将十六进制和二进制相互转换的函数...
比如:我将一个字符串表示的二进制:'00001111',将它可以转换为十六进制的:0F,如果将字符写成:'F0',则可以将它转换成字符表示的二进制:'11110000',分不多了,请不要见怪..
 
求能将十六进制和二进制相互转换的函数...
比如:我将一个字符串表示的二进制:'00001111',将它可以转换为十六进制的:0F,如果将字符写成:'F0',则可以将它转换成字符表示的二进制:'11110000',分不多了,请不要见怪..
 
//如果你需要更“经典”的函数,Call harry2.0@163.com
//但是Case语句执行更快
function HexToBin(Hex: string): string;
var
I: Integer;
begin
Result:='';
for I := 1 to Length(Hex) do
begin
case Hex of
'0': Result := Result+'0000';
'1': Result := Result+'0001';
'2': Result := Result+'0010';
'3': Result := Result+'0011';
'4': Result := Result+'0100';
'5': Result := Result+'0101';
'6': Result := Result+'0110';
'7': Result := Result+'0111';
'8': Result := Result+'1000';
'9': Result := Result+'1001';
'A': Result := Result+'1010';
'B': Result := Result+'1011';
'C': Result := Result+'1100';
'D': Result := Result+'1101';
'E': Result := Result+'1110';
'F': Result := Result+'1111';
end;
end;
end;
 
再帮下忙,由字符串的二进制('00001111')到十六进制('0F')有吗......
 
http://www.delphibbs.com/keylife/iblog_show.asp?xid=13396
 
自己写三,d里不是可以用汇编吗,然后写成个函数就搞定了,用汇编写很方便的啦
 
试这个:

function BinToHex(Bin: String): String;
var
i : integer;
tmp : integer;
iLen : integer;
begin
tmp := 0;
//Bin := ReverseString(Bin);
iLen := Length(Bin);
for i := 1 to iLen do begin
tmp := tmp + Min(StrToIntDef(Bin,0),1) shl (iLen - i);
end;
Result := Format('%.2X',[tmp]);
end;
 
BinToHex('01') 返回 '01'
BinToHex('00101') 返回 '05'
BinToHex('102') 返回 '05'
BinToHex('sf10r') 返回 '04'
BinToHex('11111111') 返回 'FF'
 
renshouren,你好,能再说一下BinToHex('01') 返回 '01'
这个BINTOHEX的用法吗, 我试了一下,DELPHI里是自带了这个函数,可以里面的参数不知道怎么使用呀,
 
首部 function IntToHex(Value: Integer; Digits: Integer): string; overload; $[SysUtils.pas
首部 function IntToHex(Value: Int64; Digits: Integer): string; overload; $[SysUtils.pas
功能 返回整数Value转换成十六进制表现结果;Format('%.*x', [Digits, Value])
说明 参数Digits指定字符最小宽度;最小宽度不足时将用0填充
参考 function SysUtils.FmtStr
例子 Edit2.Text := IntToHex(SpinEdit1.Value, SpinEdit2.Value);
 
to:sxwy
汗,DELPHI里有这个函数吗?我还不知道呢..
这个是我按自己想法写的。应该是满足你的那个要求吧
用法:
var
s : string;
begin
s := BinToHex('11111110');
//现在s的值为字符串'FE'
end;
 
function BinToHex(Bin:string):string;
var
I,J:Integer;
Sum:Integer;
begin
if Length(Bin) mod 4 <>0 then
for I:=1 to 4-Length(Bin) mod 4 do
Bin:='0'+Bin;

Sum:=0;
for I:=1 to Length(Bin) do
begin
Sum:=Sum*2+StrToInt(Bin);
if I mod 4=0 then
begin
case Sum of
0..9:Result:=Result+IntToStr(Sum);
10..15:Result:=Result+Chr(65+Sum-10);//65是A的ASCII
end;
Sum:=0;
end;
end;
end;
 
多谢TBYTBY,给分。
 
后退
顶部