在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Delphi进制转换(二进制/十进制/十六进制) 2009-11-27 11:42:24| 分类: 计算机知识 | 标签: |字号大中小 订阅 . Delphi进制转换(二进制/十进制/十六进制) 2008-08-29 10:24
一、完全用API完成:..uses Windows; function IntToStr(I: integer): string; begin Str(I, Result); end; function StrToInt(S: string): integer; begin Val(S, Result, Result); end; function HexToInt(Const HexValue: String) : Integer; begin Val('$'+HexValue, Result, Result); end; function IntToHex(Const Value: Integer): string; const HexChars: array[0..15] of Char = '0123456789ABCDEF'; var iTemp: Integer; i: Integer; begin Result := ''; i := 0; while i<4 do begin case i of 0: iTemp := Value shr 24 and $FF; 1: iTemp := Value shr 16 and $FF; 2: iTemp := Value shr 8 and $FF; 3: iTemp := Value and $FF; end; Result := Result + HexChars[iTemp div 16]; Result := Result + HexChars[iTemp mod 16]; Inc(i); end; end; function LowerCase(const S: string): String; begin Result:=CharLower(Pchar(S)); end; function UpperCase(const S: string): String; begin Result:=CharUpper(Pchar(S)); end; 二、函数实现 //十进制 to 二进制 function IntToBin(Value: LongInt;Size: Integer): String; var i: Integer; begin Result:=''; for i:=Size-1 downto 0 do begin if Value and (1 shl i)<>0 then begin Result:=Result+'1'; end else begin Result:=Result+'0'; end; end; end; //二进制 to 十进制 function BintoInt(Value: String): LongInt; var i,Size: Integer; begin Result:=0; Size:=Length(Value); for i:=Size downto 1 do begin if Copy(Value,i,1)='1' then Result:=Result+(1 shl (Size-i)); end; end; function floatBintoInt(Value: String): real; var i,Size: Integer; begin Result:=0; Size:=Length(Value); for i:=Size downto 1 do begin if Copy(Value,i,1)='1' then Result:=Result+1/(1 shl i); end; end; //十六进制 to 二进制 function HextoBinary(Hex:string):string; const BOX: array [0..15] of string = ('0000','0001','0010','0011', '0100','0101','0110','0111', '1000','1001','1010','1011', '1100','1101','1110','1111'); var i:integer; begin for i:=Length(Hex) downto 1 do Result:=BOX[StrToInt('$'+Hex[i])]+Result; end; //十六进制 to 十进制 浮点型 function HextoFloat(s:string):real; var b,temp:string; e:integer; f:real; begin b:=HextoBinary(s); temp := copy(b,2,8); e:=BintoInt(temp)-127; temp := copy(b,10,23); f := 1+floatBintoInt(temp); if(copy(b,1,1)='0')then result := power(2,e)*f else result :=-power(2,e)*f; end; Delphi进制转换(二进制/十进制/十六进制) 2009-11-27 11:42:24| 分类: 计算机知识 | 标签: |字号大中小 订阅 . Delphi进制转换(二进制/十进制/十六进制) 2008-08-29 10:24
一、完全用API完成:..uses Windows; function IntToStr(I: integer): string; begin Str(I, Result); end; function StrToInt(S: string): integer; begin Val(S, Result, Result); end; function HexToInt(Const HexValue: String) : Integer; begin Val('$'+HexValue, Result, Result); end; function IntToHex(Const Value: Integer): string; const HexChars: array[0..15] of Char = '0123456789ABCDEF'; var iTemp: Integer; i: Integer; begin Result := ''; i := 0; while i<4 do begin case i of 0: iTemp := Value shr 24 and $FF; 1: iTemp := Value shr 16 and $FF; 2: iTemp := Value shr 8 and $FF; 3: iTemp := Value and $FF; end; Result := Result + HexChars[iTemp div 16]; Result := Result + HexChars[iTemp mod 16]; Inc(i); end; end; function LowerCase(const S: string): String; begin Result:=CharLower(Pchar(S)); end; function UpperCase(const S: string): String; begin Result:=CharUpper(Pchar(S)); end; 二、函数实现 //十进制 to 二进制 function IntToBin(Value: LongInt;Size: Integer): String; var i: Integer; begin Result:=''; for i:=Size-1 downto 0 do begin if Value and (1 shl i)<>0 then begin Result:=Result+'1'; end else begin Result:=Result+'0'; end; end; end; //二进制 to 十进制 function BintoInt(Value: String): LongInt; var i,Size: Integer; begin Result:=0; Size:=Length(Value); for i:=Size downto 1 do begin if Copy(Value,i,1)='1' then Result:=Result+(1 shl (Size-i)); end; end; function floatBintoInt(Value: String): real; var i,Size: Integer; begin Result:=0; Size:=Length(Value); for i:=Size downto 1 do begin if Copy(Value,i,1)='1' then Result:=Result+1/(1 shl i); end; end; //十六进制 to 二进制 function HextoBinary(Hex:string):string; const BOX: array [0..15] of string = ('0000','0001','0010','0011', '0100','0101','0110','0111', '1000','1001','1010','1011', '1100','1101','1110','1111'); var i:integer; begin for i:=Length(Hex) downto 1 do Result:=BOX[StrToInt('$'+Hex[i])]+Result; end; //十六进制 to 十进制 浮点型 function HextoFloat(s:string):real; var b,temp:string; e:integer; f:real; begin b:=HextoBinary(s); temp := copy(b,2,8); e:=BintoInt(temp)-127; temp := copy(b,10,23); f := 1+floatBintoInt(temp); if(copy(b,1,1)='0')then result := power(2,e)*f else result :=-power(2,e)*f; end; |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论