![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
//
十进制
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 ;
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 ;