基本上我想知道是否有某种方法可以获取仅包含1和0的字符串,它表示二进制数并将其转换为整数。任何帮助将不胜感激!
答案 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;
如果字符串太长,您也可以添加检查功率流的代码。