lisp - 在 Lisp 中将数字从某个基数转换为基数 10

标签 lisp common-lisp radix

如何在 Lisp 中将一个数字从某个基数转换为基数 10? 是否有任何默认功能可以做到这一点,如果不是,我该如何构建该功能?

最佳答案

在对 my answer 的评论中对于您之前的问题,https://stackoverflow.com/q/33634012/1281433 ,你(含蓄地)问了这个:

I need also to do the reverse function (to convert a number in any base into base 10) and i dont know :(

我回答说,希望您能访问文档,“Common Lisp HyperSpec 非常全面。我建议您查找名称以 parse- 开头的函数。”为了使这一点更清楚,如果您转到 P in the index , 有一个函数 parse-integer这正是你正在寻找的。在我看来,这比在另一个答案中使用 *read-base*read 的方法更安全,因为使用 read 可以打开你的大门一堆问题(你可以阅读非数字,可以有阅读时间评估等)。 parse-integer 可以满足您的要求:

(parse-integer "9" :radix 16)  ;=> 9
(parse-integer "10" :radix 16)  ;=> 16
(parse-integer "1af" :radix 16) ;=> 431
(parse-integer "111" :radix 2)  ;=> 7

关于lisp - 在 Lisp 中将数字从某个基数转换为基数 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33647658/

相关文章:

lisp - 如何在普通的 lisp 中实现自然排序?

arguments - Common Lisp - 给出 &rest 列表作为参数

lisp - 想学习普通的 lisp

lisp - Common Lisp 中的循环列表

c++ - clang 空基类优化 (EBCO)

java - 循环时找不到符号

python - 在python中定义一个新的数字基数(新的字符集)

LISP 1.5 lisp 与机器语言有何相似之处?

xml - 我如何使用 cxml-stp 的 find-recursively 和 find-recursively-if

clojure - 在 Liberator Clojure 中发布未返回 200 OK