在Pascal中,有没有办法逆转IntToBin()函数的效果?

在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

基本上,我想知道是否有某种方法可以将只包含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
    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