27

我试图找到一个 lisp 函数来在数字和字符串之间进行转换,经过一番谷歌搜索后,我喜欢了一个同名的函数。当我进入(itoa 1)SLIME 时打印:

Undefined function ITOA called with arguments (1) .

我该如何进行转换?

4

3 回答 3

55

从数字到字符串:

(write-to-string 5)
"5"

您可以将字符串转换为任何数字符号:

(write-to-string 341 :base 10)
"341"

从字符串到数字:

(parse-integer "5")
5

有一些垃圾

(parse-integer " 5 something not a number" :junk-allowed t)
5

或者使用这个:

(read-from-string "23 absd")
23
于 2013-04-25T19:34:01.323 回答
19

一个重量级的解决方案是使用 FORMAT:

[2]> (format nil "~A" 1)
"1"

还有WRITE-TO-STRING

[3]> (write-to-string 10)
"10"
于 2013-04-25T17:01:21.783 回答
1

仅供参考:我相信(itoa #)只是 AutoLISP 中的一个功能 - 嵌入在 AutoCAD 绘图软件中的 LISP 变体。AutoLISP 的函数比 Common Lisp 少得多,有时相同的函数具有不同的名称或具有相同名称但操作不同的函数。

这可能就是为什么它对你不起作用。我经常使用 AutoLISP,并且 (itoa #) 会完全按照您的意愿行事。

于 2016-07-21T08:43:32.710 回答