在Pascal中,有没有办法逆转IntToBin()函数的效果?
基本上,我想知道是否有某种方法可以将只包含1和0的字符串(表示二进制数)转换为整数。任何帮助都将不胜感激 就这样做吧:在Pascal中,有没有办法逆转IntToBin()函数的效果?,pascal,Pascal,基本上,我想知道是否有某种方法可以将只包含1和0的字符串(表示二进制数)转换为整数。任何帮助都将不胜感激 就这样做吧: function BinToInt(const BinStr: string): integer; var Multiplier: integer; i: byte; begin Multiplier := 1; result := 0; for i := High(BinStr) downto Low(BinStr) do
function BinToInt(const BinStr: string): integer;
var
Multiplier: integer;
i: byte;
begin
Multiplier := 1;
result := 0;
for i := High(BinStr) downto Low(BinStr) do
begin
if BinStr[i] = '1' then
result := result + Multiplier;
Multiplier := Multiplier * 2; // or := Multiplier shl 1;
end;
end;
如果字符串太长,您还可以添加代码来检查owerflow。您可以使用
strotint
记住strotint
使用整数常量的Pascal约定解释字符串。二进制常量用%
前缀表示(例如,二进制101001
将表示为%101001
)。因此,您可以预先添加一个%
(用于指示二进制常量),然后使用stroint
:
var
x: Integer;
s: string;
...
s := '101001';
...
x := StrToInt( '%' + s );
writeln(x);
这将打印41