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
我到底该怎么做?
已经有一个公认的答案,但学习如何找到答案与获取具体答案一样有帮助。查找所需函数的一种方法是适当搜索“ 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函数。
为了人物和他们的数字编码之间的转换,也有char-code和code-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)