将十六进制字符串转换为整数

时间:2018-07-01 04:47:32

标签: prolog

我想要的只是形式的谓词

parse_hex(H, N).

可以在十六进制字符串和prolog整数之间转换。显然,我可以自己实现此功能,但我想知道是否有内置功能。我找不到一个内置功能,但似乎必须有一种方法可以实现。

1 个答案:

答案 0 :(得分:1)

鉴于标准Prolog支持十六进制数字,如果用字符串表示您是Prolog原子:

parse_hex(H, N) :-
    atom_concat('0x', H, HexaAtom),
    atom_codes(HexaAtom, HexaCodes),
    number_codes(N, HexaCodes).

如果确实有字符串而不是原子,请参阅Prolog文档中有关将其转换为原子的信息。例如。 SWI-Prolog提供了atom_string/2双向内置谓词。

通话示例:

?- parse_hex('ff', N).
N = 255.