prolog - 从 Prolog 中的术语获取 ASCII 值列表

标签 prolog ascii

我使用的是 SWI-Prolog 7.6.3 版,最近我遇到了一个问题,要将结合了数字和字母的术语转换成它的 ASCII 值列表。

我知道我们可以使用 name/2 谓词获取特定术语的 ASCII 值列表。例如,如果我想获取术语 ab'ab' 的 ASCII 值,那么我们可以使用 name(ab,X)。 Prolog简单输出X = [97, 98],97和98分别是a和b的ASCII值。

谓词 name/2 也适用于数字。如果我想获取术语 123'123' 的 ASCII 值,那么我们可以使用 name(123,X)。同样,Prolog 仅输出 X = [49, 50, 51],其中 49、50 和 51 分别是 1、2 和 3 的 ASCII 值。

但是,如果我将数字和字母组合在一个术语中,则谓词 name/2 不起作用。例如,我希望 name(2a,X) 返回 X = [49, 97]name(3b,X) 返回 X = [50,98]。但是,解释器给出错误异常,指出需要运算符(operator)。

我注意到只有当术语以数字开头时才会出现问题。我在解释器中检查 name(a2,X) 按预期返回 X = [97, 49]

我该如何解决这个问题?或者这种情况在 Prolog 中无法处理?

最佳答案

3a 不是 Prolog 原子。要使它成为一个原子,请将其用单引号引起来:

'3a'

另外,查看 atom_chars/2 将原子与字符列表联系起来!

关于prolog - 从 Prolog 中的术语获取 ASCII 值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50230829/

相关文章:

javascript - 在 Node.js 中的变量中插入 ASCII

Python ASCII 图形绘图

prolog - 在 Prolog 中使用广度优先搜索 (BFS) 解决食人族/传教士问题?

prolog - map 功能的实现

recursion - Prolog 将分钟转换为小时

php - 如何在 PHP 中获取字符串的字节值?

ios - 将 HEX NSString 转换为 ASCII NSString

Python,file(1) - 为什么数字 [7,8,9,10,12,13,27] 和范围 (0x20, 0x100) 用于确定文本文件与二进制文件

prolog - 用 prolog 找到一个 bool 电路

prolog - 你能在纯序言中写 between/3 吗?