unit U_HexFunction; interface uses SysUtils,Windows,forms,Spcomm, shlobj,ExtCtrls; function HexStrToStr(const S:string):string; // 十六进制转字符串 function StrToHexStr(const S:string):string; function bintoint01(s: string): Double; //二进制转换十进制 function hextoint01(s: string): Integer; //十六进制转换十进制 Function intTobin01(Value :Integer): string; //十进制转换二进制 Function intTohex01(value :integer): string; //十进制转换十六进制 implementation uses Math; Function intTohex01(value :integer) : string; begin result:=uppercase(format('%x',[value])); end; //二进制字符转十进制 Function binToDec(Value :string) : string;//integer; VAR str : String; Int : Integer; i : integer; BEGIN Str := UpperCase(Value); Int := 0; FOR i := 1 TO Length(str) DO Int := Int * 2+ ORD(str[i]) - 48; Result := IntToStr(Int); end; //十进制转二进制 函数一 function mod_num(n1,n2:integer):integer;//取余数 begin result:=n1-n1 div n2*n2 end; //十进制转二进制 函数二 function reverse(s:String):String;//取反串 Var i,num:Integer; st:String; begin num:=Length(s); st:=''; For i:=num DownTo 1 do Begin st:=st+s[i]; End; Result:=st; end; //十进制转二进制 Function intTobin01(Value:Integer) : string; Var ST:String; N:Integer; Begin ST:=''; n:=value; While n>=2 Do Begin st:=st+IntToStr(mod_num(n,2)); n:=n div 2; End; st:=st+IntToStr(n); Result:=reverse(st); End; function HexStrToStr(const S:string):string; //16进制字符串转换成字符串 var t:Integer; ts:string; M,Code:Integer; begin t:=1; Result:=''; while t<=Length(S) do begin //xlh 2006.10.21 while (t<=Length(S)) and (not (S[t] in ['0'..'9','A'..'F','a'..'f'])) do inc(t); if (t+1>Length(S))or(not (S[t+1] in ['0'..'9','A'..'F','a'..'f'])) then ts:='$'+S[t] else ts:='$'+S[t]+S[t+1]; Val(ts,M,Code); if Code=0 then Result:=Result+Chr(M); inc(t,2); end; end; function StrToHexStr(const S:string):string; //字符串转换成16进制字符串 var I:Integer; begin for I:=1 to Length(S) do begin if I=1 then Result:=IntToHex(Ord(S[1]),2) else Result:=Result+IntToHex(Ord(S[I]),2); end; end; //十六进制(S)-->>十进制(I) function hextoint01(s: string): Integer; begin //$代表16进制 Result:=StrToInt('$'+s); end; //二进制(S)-->>十进制(D) [重写:Jey] function bintoint01(s: string): Double; begin while Length(s) <>0 do begin //2^(长度-1)次方 if s[1]='1' then Result:=Result+power(2,Length(s)-1); s:=Copy(s,2,Length(s)); end end; end.