Delphi没有直接提供整形转二进制的函数,就自己写了一个,贴出来与大家共享.
并没有对速度做优化,各位有更新的版本请共享,谢谢!
function
Int2Bin(intVal:
integer
):
string
;
{整形转二进制串}
begin
// 先转为16进制字串,然后从16进制串转为2进制串
return Hex2Bin(Format( ' %X', [intVal]));
end ;
function Hex2Bin(hexVal: string ): string ;
{十六进制转二进制串}
Var
mHex: string ;
begin
mHex : = hexVal;
mHex : = StringReplace(mHex, ' 0', '0000', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 1', '0001', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 2', '0010', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 3', '0011', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 4', '0100', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 5', '0101', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 6', '0110', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 7', '0111', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 8', '1000', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 9', '1001', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' A', '1010', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' B', '1011', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' C', '1100', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' D', '1101', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' E', '1110', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' F', '1111', [rfReplaceAll]);
Result : = mHex;
end ;
{整形转二进制串}
begin
// 先转为16进制字串,然后从16进制串转为2进制串
return Hex2Bin(Format( ' %X', [intVal]));
end ;
function Hex2Bin(hexVal: string ): string ;
{十六进制转二进制串}
Var
mHex: string ;
begin
mHex : = hexVal;
mHex : = StringReplace(mHex, ' 0', '0000', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 1', '0001', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 2', '0010', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 3', '0011', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 4', '0100', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 5', '0101', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 6', '0110', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 7', '0111', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 8', '1000', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' 9', '1001', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' A', '1010', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' B', '1011', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' C', '1100', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' D', '1101', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' E', '1110', [rfReplaceAll]);
mHex : = StringReplace(mHex, ' F', '1111', [rfReplaceAll]);
Result : = mHex;
end ;