当前Pascal中:HEX和:OCT是否有等效值?

当前Pascal中:HEX和:OCT是否有等效值?,pascal,freepascal,Pascal,Freepascal,我正在尝试将一个旧的Pascal程序转换成一个编译并使用免费Pascal的程序。 我遇到的一种机制是在读取值时进行某种转换: readln (file,ValueHex:HEX); 或 在后一种情况下,当文件中读取的值是8进制的12值时,存储在MyValue中的值是十进制的10值 要写入这些值,代码为: writeln (hex(ValueHex,4), oct(ValueOct,3)); 现在是: writeln (HEXSTR(ValueHex,4), OCTSTR(ValueOct,4

我正在尝试将一个旧的Pascal程序转换成一个编译并使用免费Pascal的程序。 我遇到的一种机制是在读取值时进行某种转换:

readln (file,ValueHex:HEX);

在后一种情况下,当文件中读取的值是8进制的12值时,存储在MyValue中的值是十进制的10值

要写入这些值,代码为:

writeln (hex(ValueHex,4), oct(ValueOct,3));
现在是:

writeln (HEXSTR(ValueHex,4), OCTSTR(ValueOct,4));

写入部分按预期工作,但在所有免费的Pascal文档中,我都找不到与:HEX和:OCT等效的函数,它是否存在,或者我是否必须编写专用函数将十六进制和八进制值转换为十进制值?

否。您需要以字符串形式读取,然后自己进行转换。我以前甚至没有听说过这些扩展,所以它可能不是一个常见的扩展。它是哪种方言

请注意,FreePascal还支持&作为八进制和%作为二进制前缀

uses sysutils;
begin
  Writeln (StrToInt('$1234'));
  Writeln (StrToInt('&1000'));
  Writeln (StrToInt('%1010101'));
end.
对于十六进制,还有一个不带前缀的选项:

否。您需要读取为字符串,然后自己进行转换。我以前甚至没有听说过这些扩展,所以它可能不是一个常见的扩展。它是哪种方言

请注意,FreePascal还支持&作为八进制和%作为二进制前缀

uses sysutils;
begin
  Writeln (StrToInt('$1234'));
  Writeln (StrToInt('&1000'));
  Writeln (StrToInt('%1010101'));
end.
对于十六进制,还有一个不带前缀的选项:

至少在Delphi中,stroint可以用于将十六进制字符串转换为整数。stroint“$20”产生32。这也适用于免费Pascal,只要您要转换的字符串正确地以$or&作为前缀。这不是我的输入文件没有前缀的情况。基本知识在程序中,而不是在文件本身中。我更喜欢不影响我的输入文件格式的解决方案,但如果没有其他问题,我会记住这一点,谢谢!Valram:当然,如果mystring没有前缀$,那么可以使用stroint“$”+mystring。至少在Delphi中,stroint可以用于将十六进制字符串转换为整数。stroint“$20”产生32。这也适用于免费Pascal,只要您要转换的字符串正确地以$or&作为前缀。这不是我的输入文件没有前缀的情况。基本知识在程序中,而不是在文件本身中。我更喜欢不影响我的输入文件格式的解决方案,但如果没有其他问题,我会记住这一点,谢谢!Valram:当然,如果mystring的前缀不是$,那么您可以使用stroint“$”+mystring。