在 SWI-Prolog 中,是否有一种简单的方法可以使用 REPL 将数字从一个基数转换为另一个基数?

Guy*_*der 2 prolog swi-prolog

在使用 REPL 的 SWI-Prolog 中,可以轻松地从任何基数转换为基数 10,例如

?- X = 16'FF.
X = 255.

?- X = 2'11111111.
X = 255.
Run Code Online (Sandbox Code Playgroud)

然而这失败了。(没想到它会起作用,但显示了我的想法。)

?- 2'X = 16'FF.
ERROR: Syntax error: Operator expected
ERROR: 
ERROR: ** here **
ERROR: 2'X = 16'FF . 
Run Code Online (Sandbox Code Playgroud)

mat*_*mat 5

在 SWI-Prolog 中,您可以在以下r位置使用基数:format/2

以基数参数表示法打印整数。因此 ~16r 以十六进制打印其参数。参数应在 [2, ... , 36] 范围内。小写字母用于 9 以上的数字。冒号修饰符可用于形成特定于区域设置的数字组。

例子:

?- 格式(“~2r”,0xFF)。
11111111
真的。