在Pascal中,有没有办法扭转IntToBin()函数的影响?

时间:2016-02-07 19:28:54

标签: pascal

基本上我想知道是否有某种方法可以获取仅包含1和0的字符串,它表示二进制数并将其转换为整数。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

您可以使用StrToInt时记住StrToInt使用Pascal约定来解释整数常量的字符串。二进制常量用%前缀表示(例如,二进制101001将表示为%101001)。因此,您可以添加%(用于表示二进制常量),然后使用StrToInt

var
  x: Integer;
  s: string;

...
s := '101001';
...
x := StrToInt( '%' + s );
writeln(x);

这将打印41

答案 1 :(得分:1)

做这样的事情:

  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;

如果字符串太长,您也可以添加检查功率流的代码。