如何在 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/