2014-10-02 137 views
2

是否有一種方法可以在Common Lisp中將整數解析爲它們的char等價物?將整數轉換爲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的方法

我到底該怎麼做?

回答

4

要人物和他們的數字編碼之間的轉換,有char-codecode-char

* (char-code #\A) 
65 
* (code-char 65) 
#\A 

然而,到數字轉換爲相應的字符,有digit-char

* (digit-char 1) 
#\1 
* (digit-char 13 16) ; radix 16 
#\D 
4

有已經一個被接受的答案,但它可以一起學習如何找到答案作爲獲得具體答案。找到你需要的功能的一種方法就是去搜索「CHAR」,然後執行apropos。例如,在CLISP中,你會得到:

> (apropos "CHAR" "CL") 
... 
CHAR-CODE         function 
... 
CODE-CHAR         function 
... 

另一個有用的資源是HyperSpec。有permuted index,在「C」頁面中搜索「char」會很有用。另外,在HyperSpec中,章節13. Characters是相關的,並且13.2 The Characters Dictionary將是有用的。

這兩種方法也會在其他答案中找到數字字符函數。