在当前的 Pascal 中是否有 :HEX 和 :OCT 的等价物?

Is there an equivalent for :HEX and :OCT in current Pascal?

我正在尝试将旧的 Pascal 程序转换为可以使用 Free Pascal 编译(和工作)的程序。 我遇到的一种机制是在读取值时完成的一种转换:

readln (file,ValueHex:HEX);

readln (file,ValueOct:OCT);

在后一种情况下,当文件中读取的值为“12”(八进制值)时,"MyValue"中存储的值为“10”(十进制值)。

编写这些值的代码是:

writeln (hex(ValueHex,4), oct(ValueOct,3));

现在是:

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

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

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

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

uses sysutils;
begin
  Writeln (StrToInt('34'));
  Writeln (StrToInt('&1000'));
  Writeln (StrToInt('%1010101'));
end.

十六进制还有一个没有前缀的选项: https://www.freepascal.org/docs-html/rtl/strutils/hex2dec.html