优质解答
program testcase;
Uses sysutils;
var hex,result:string;
hex_len,i,ch,chv,value,bits:Integer;
good_char :boolean;
begin
writeln('Please input a HEX string:');
readln(hex);
hex_len:=length(hex);
hex:=UpperCase(hex);//统一转换成大写
//writeln('Total number of Chars:',hex_len);
//writeln('b:',(127 shr 1));
bits:=0;
value:=0;
result:='';
for i:=hex_len downto 1 do
begin
ch:=ord(hex[i]);
//writeln('ch:',ch);
if (ch>=48) and (ch =65) and (ch =3 do
begin
chv:=value and 7;
result:=chr(chv+48)+result;
value:= value shr 3;
bits:=bits-3;
end;
end;
end;
if (bits>0) and (value0) then
begin
chv:=value and 7;
result:=chr(chv+48)+result;
end;
if (result[1]='0') and (length(result)>1) then
Delete(result,1,1);
writeln('Result:',result);
writeln('Press ENTER to end the program.');
readln;
end.
一直总想学pascal,可没有机会.拿着你的题练了一下.
FreePascal2.4编译器,16进制转8进制输出:
Please input a HEX string:
ffffff
Result:77777777
Press ENTER to end the program.
Please input a HEX string:
123abc
Result:4435274
Press ENTER to end the program.
感觉Pascal真够古拙的.比c系更接近自然语言英语,更接近伪代码.
方便的string,集合,特别是更严格地遵循结构化编程的原则.
由于严格连垃圾回收都不需要.
Statement,“语句”这种概念在现代编程语言都很难找到了
(感慨.开始很不适应end.还是end; 还是end.哈哈)
总之,在Java没出来之前,的确是一个好且强大的高级应用语言.