Prolog - 字符串或字符的字符代码列表

时间:2012-12-02 15:40:19

标签: list character-encoding prolog character

我在prolog中有一个字符代码列表。

我想将它们改成字符。

例如,

L = "abc" 返回L = [97,98,99]

假设我从L = [97,98,99]

开始

无论如何将L转换回abc,如果存在方法

convert(L, X)返回X = abc

感谢。

3 个答案:

答案 0 :(得分:5)

鉴于L="abc", convert(L, X), X = abc我说你想从prolog字符串中获取原子(参见Data types description)。 我想你想要atom_codes/2或类似的东西。根据文档,它应该像L="abc", atom_codes(X, L).一样工作。

很遗憾,目前我的系统中没有SWI-Prolog。但这里有YAP,其中包含atom_codes/2

YAP 6.3.2 (x86_64-linux): Sat Sep  1 08:24:15 EEST 2012
MYDDAS version MYDDAS-0.9.1
?- L="abc", atom_codes(X,L).
L = [97,98,99],
X = abc

不要忘记,如果你需要输出字符串,你就不需要将它转换为原子。请参阅format/2 in SWI(或in YAP

?- L="abc", format("~s~n", [L]).
abc
L = [97,98,99]

答案 1 :(得分:4)

在地图列表中使用char_code(?Atom, ?ASCII)

  

char_code(?Atom,?ASCII)在字符和ASCII值之间转换   单个字符。 (16)

Source

答案 2 :(得分:4)

字符表示为长度为1的原子。您可以生成它们:

  • 在阅读时更改Prolog标志double_quotes。有关更多信息,请参阅thisthat链接。

    :- set_prolog_flag(double_quotes, chars).
    
  • 动态地,您可以使用atom_codes/2atom_chars/2。或者您可以直接使用char_code/2