有没有办法在Common Lisp中将整数解析为它们的char等价物?
我整个上午一直在寻找,只找到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
我到底该怎么做?
答案 0 :(得分:5)
要在字符及其数字编码之间进行转换,有char-code
和code-char
:
* (char-code #\A)
65
* (code-char 65)
#\A
但是,要将数字转换为相应的字符,有digit-char
:
* (digit-char 1)
#\1
* (digit-char 13 16) ; radix 16
#\D
答案 1 :(得分:4)
已经接受了答案,但学习如何找到答案作为获得具体答案同样有帮助。找到所需功能的一种方法是进行 apropos 搜索" CHAR"。例如,在CLISP中,你得到:
> (apropos "CHAR" "CL")
...
CHAR-CODE function
...
CODE-CHAR function
...
另一个有用的资源是HyperSpec。在那里permuted index,并搜索" char"在" C"页面将是有用的。或者,在HyperSpec中,章节13. Characters是相关的,13.2 The Characters Dictionary将是有用的。
这两种方法也会找到另一个答案中提到的 digit-char 功能。