我使用的是SWI-Prolog版本7.6.3,最近我遇到了将数字和字母组合成一个术语转换为ASCII值列表的问题.
我知道我们可以使用name/2
谓词获取特定术语的ASCII值列表.例如,如果我想获得长期的ASCII值ab
或者'ab'
,那么我们就可以使用name(ab,X)
.Prolog只是输出X = [97, 98]
,97和98分别是a和b的ASCII值.
谓词name/2
也适用于数字.如果我想获得长期的ASCII值123
或者'123'
,那么我们就可以使用name(123,X)
.同样,Prolog只输出X = [49, 50, 51]
49,50和51相应的ASCII值1,2和3.
但是,name/2
如果我在一个术语中组合数字和字母,则谓词不起作用.例如,我期望name(2a,X)
返回X = [49, 97]
和name(3b,X)
返回X = [50,98]
.但是,解释器会给出错误异常,说明操作符是预期的.
我注意到只有术语以数字开头才会出现问题.我检查了按预期name(a2,X)
返回的解释器X = [97, 49]
.
我该如何解决这个问题?或者这种情况本身不能在Prolog中处理?