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

7
有没有一种方法在Common Lisp中将整数解析为它们的字符等效物?
我已经寻找了整个上午,只找到了char-int...
* (char-int #\A)

65

一些其他来源也声称存在 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")

然而,我真正需要的是将1转换为#\1的方法。

具体该如何实现呢?

2个回答

10
为了在字符和它们的数字编码之间进行转换,可以使用char-codecode-char两个函数:
* (char-code #\A)
65
* (code-char 65)
#\A

然而,要将数字转换为相应的字符,可以使用digit-char函数:
* (digit-char 1)
#\1
* (digit-char 13 16) ; radix 16
#\D

7
已有一个被接受的答案,但学习如何找到答案可能与得到特定答案一样有帮助。找到所需函数的一种方法是使用 "apropos" 搜索 "CHAR"。例如,在CLISP中,您会得到以下结果:
> (apropos "CHAR" "CL")
...
CHAR-CODE                                  function
...
CODE-CHAR                                  function
...

另一个有用的资源是HyperSpec。在“C”页面中搜索“char”,可以使用排列索引。另外,在HyperSpec中,第13章. 字符相关,13.2字符字典也很有用。
这两种方法也会找到其他答案中提到的digit-char函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接