Emacs Lisp:获取字符的 ascii 值

Posted

技术标签:

【中文标题】Emacs Lisp:获取字符的 ascii 值【英文标题】:Emacs Lisp: getting ascii value of character 【发布时间】:2013-11-20 16:00:45 【问题描述】:

我想将 Emacs 中的一个字符转换为它的数字 ascii 代码,类似于在 c 中转换 char a = 'a'; int i = (int)a。我已经尝试过string-to-number 和其他一些函数,但似乎没有一个能让 Emacs 最终将 char 读取为数字。

最简单的方法是什么?

【问题讨论】:

【参考方案1】:

要获得代表字符的 ascii 数字——正如 Drew 所说——在字符前放一个问号并计算该表达式

?a ==> 97

数字出现在 minibuffer 中,用 C-u 写在表达式后面。

反之亦然

(insert 97) 将在缓冲区中插入一个“a”。

顺便说一句,在某些情况下字符应该被引用

?\" 将评估为 34

【讨论】:

后续问题,如果我现在想将 97 转换为字符 'a' 怎么办? 试试例如:(insert 97)(print 97)(message "%c" 97)(eval 97)【参考方案2】:

字符 Emacs Lisp 中的一个整数。没有单独的字符数据类型。

函数string-to-char 是内置的,可以做你想做的事。 (string-to-char "foo") 等价于 (aref "foo" 0),这是 @abo-abo 的答案 --- 但它是用 C 编码的。

【讨论】:

【参考方案3】:

字符串是一个数组。

(aref "foo" 0)

【讨论】:

以上是关于Emacs Lisp:获取字符的 ascii 值的主要内容,如果未能解决你的问题,请参考以下文章

emacs lisp,如何获得缓冲区主要模式?

请教,关于emacs写lisp自动补全的设置

在 emacs lisp 中将多个路径组件加入到单个完整路径中的正确方法是啥?

Emacs Lisp 和 Common Lisp 之间的主要区别是啥? [关闭]

2020-03-01emacs 中使用LISP

Common Lisp 入门配置开发环境 in Emacs