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

问题描述 投票:1回答:2

例如,在使用REPL的SWI-Prolog中,可以很容易地从任意基数转换为基数10

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

?- X = 2'11111111.
X = 255.

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

?- 2'X = 16'FF.
ERROR: Syntax error: Operator expected
ERROR: 
ERROR: ** here **
ERROR: 2'X = 16'FF . 
prolog swi-prolog
2个回答
4
投票

在SWI-Prolog中,您可以将r中的基数用于format/2

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

示例:

?-format(“〜2r”,0xFF)。11111111真正。

0
投票

这是作为答案发布的评论,因为它需要注释无法设置的格式。

如果您有兴趣捕获输出以表示要在程序中使用的原子,字符串,字符或字符代码,则可以使用format / n的其他变体。请参阅:format/2

format/3
© www.soinside.com 2019 - 2024. All rights reserved.