我正在尝试做一个简单的控制台程序,用户输入一个二进制字符串,然后他得到一个十进制数。我不需要检查二进制字符串是否具有非0或1的值。我已经设法将十进制转换为二进制,但是不能用其他方式做到这一点。
我尝试了一些在SO和Reddit上找到的代码,但是大多数时候我遇到错误I / O 105
这是要分档的十进制:
program dectobin;
{$APPTYPE CONSOLE}
uses
SysUtils,
Crt32;
var
d,a :Integer;
str :String;
begin
str:='';
Readln(a);
while a>0 do begin
d:=a mod 2;
str:=concat(IntToStr(d),str);
a:=a div 2;
end;
Writeln(str);
Readln;
end.```
答案 0 :(得分:0)
位置编号系统(PNS)的基础
请注意,权重始终为base * weight of previous digit
(从右到左方向)
在任何位置数字系统中对一串数字的一般解释
assign a variable 'result' = 0
assign a variable 'weight' = 1 (for (base)^0 )
repeat
read the rightmost (not yet read) digit from string
convert digit from character to integer
multiply it by weight and add to variable 'result'
multiply weight by base in prep. for next digit
until no more digits
在上一个之后,您可以使用例如IntToStr()
转换为十进制字符串。