将整数转换为Common Lisp中的字符

Ele*_*fee 3 common-lisp type-conversion

有没有办法在Common Lisp中将整数解析为它们的char等价物?

我整个上午一直在寻找,只发现char-int......

* (char-int #\A)

65
Run Code Online (Sandbox Code Playgroud)

其他一些消息来源也声称存在 int-char

* (int-char 65)
; in: INT-CHAR 65
;     (INT-CHAR 65)
; 
; caught STYLE-WARNING:
;   undefined function: INT-CHAR
; 
; compilation unit finished
;   Undefined function:
;     INT-CHAR
;   caught 1 STYLE-WARNING condition

debugger invoked on a UNDEFINED-FUNCTION:
  The function COMMON-LISP-USER::INT-CHAR is undefined.

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [ABORT] Exit debugger, returning to top level.

("undefined function")
Run Code Online (Sandbox Code Playgroud)

然而,我真正想要的是一种转换的1方式#\1

我到底该怎么做?

Jos*_*lor 7

已经有一个公认的答案,但学习如何找到答案与获取具体答案一样有帮助。查找所需函数的一种方法是适当搜索 CHAR”。例如,在 CLISP 中,您会得到:

> (apropos "CHAR" "CL")
...
CHAR-CODE                                  function
...
CODE-CHAR                                  function
...
Run Code Online (Sandbox Code Playgroud)

另一个有用的资源是 HyperSpec。有排列索引,在“C”页面中搜索“char”将会很有用。或者,在 HyperSpec 中,第13 章“字符”是相关的,并且13.2 字符字典会很有用。

这两种方法也会找到其他答案中提到的digital-char函数。


jla*_*ahd 5

为了人物和他们的数字编码之间的转换,也有char-codecode-char:

* (char-code #\A)
65
* (code-char 65)
#\A
Run Code Online (Sandbox Code Playgroud)

但是,要将数字转换为相应的字符,有digit-char:

* (digit-char 1)
#\1
* (digit-char 13 16) ; radix 16
#\D
Run Code Online (Sandbox Code Playgroud)