在使用REPL的SWI-Prolog中,例如,可以轻松地从任意基数转换为基数10。
<div class="main">
In the middle of a paragraph
<div class="two-lines">INLINE-BLOCK, WHICH CONTAINS TWO EQUALLY LONG LINES.</div>,
with text preceding and following it.
Some more text, and here comes a
<div class="two-lines">SHORT ONE</div>!
You see? Two lines!
</div>
但是这失败了。 (没想到它会起作用,但是会显示我的想法。)
?- X = 16'FF.
X = 255.
?- X = 2'11111111.
X = 255.
答案 0 :(得分:2)
在SWI-Prolog中,您可以在format/2
中将r
用于基数 :
以基数数字参数表示法打印整数。因此〜16r将其参数打印为十六进制。参数应在[2,...,36]范围内。小写字母用于9以上的数字。冒号修饰符可用于形成区域设置特定的数字组。
示例:
?- format("~2r", 0xFF). 11111111 true.
答案 1 :(得分:1)
这是发布为答案的评论,因为它需要注释无法执行的格式。
如果您有兴趣捕获输出以表示要在程序中使用的原子,字符串,字符或字符代码,则可以使用 format / n 的其他变体。参见:format/3
?- format(atom(Hex),"~2r",0xFF).
Hex = '11111111'.
?- format(string(Hex),"~2r",0xFF).
Hex = "11111111".
?- format(chars(Hex),"~2r",0xFF).
Hex = ['1', '1', '1', '1', '1', '1', '1', '1'].
?- format(codes(Hex),"~2r",0xFF).
Hex = [49, 49, 49, 49, 49, 49, 49, 49].