轉換一個數字基地10我如何將數字轉換從某基地到Lisp的基地10? 是否有任何可以做到這一點的默認功能,如果沒有,我該如何建立該功能?從某基地的Lisp
回答
基地整數僅在可視化和解釋方面的有趣。因此,「10」是十進制的可視化,八進制的八進制和十六進制的十六進制的可視化,但是該數字看起來不像內存中的那樣。
您可以更改表示與*print-base*
:
(let ((*print-base* 8))
(print 10)) ; ==> 10, but displays "12"
爲什麼它打印12是因爲當打印*print-base*
是8
而REPL打印形式的結果後*print-base*
是回全局值是。您閱讀的數字使用*read-base*
:
(let ((*read-base* 16))
(with-input-from-string (in "10") (read in))) ; ==> 16
雖然,請仔細閱讀**閱讀**。 Common Lisp的sharpsign-dot允許讀者進行評估。例如,'(讓((*閱讀基地* 16))(與輸入 - 從字符串(如 「#(progn這個(打印 '你好)' F)」)(讀取)))'將返回15 (「f」的值),但也會打印** HELLO **(但可以注入任意代碼)。 –
@JoshuaTaylor我同意。對於只是解析整數'parse-integer'更好。在[Let over lambda](http://letoverlambda.com/index.cl/guest/chap4.html)中提供了一種禁用閱讀器宏的方法(搜索「Reader security」頁面)。 – Sylwester
這只是一個[\ *閱讀-EVAL \ *](http://www.lispworks.com/documentation/HyperSpec/Body/v_rd_eva.htm)設置爲** **爲零,無事? –
在評論my answer到你剛纔的問題,https://stackoverflow.com/q/33634012/1281433,你(隱含)被問及此事:
我也需要做反向功能(轉換一個號碼在任何基地到基地10),我不知道:(
我回答說,希望你能訪問文檔,「的C ommon Lisp HyperSpec非常全面。我建議你看看他們的名字開始與parse-功能。」爲了使這個更清楚,如果你去P in the index,有一個功能parse-integer但這正是你要找的東西。這是安全的,在我看來, ,比使用* read-base *和讀取的方法在另一個答案中,因爲使用讀取打開你一堆問題(可以讀取非數字,可以有讀取時間評估等。 。)解析整數確實你剛纔問什麼:
(parse-integer "9" :radix 16) ;=> 9
(parse-integer "10" :radix 16) ;=> 16
(parse-integer "1af" :radix 16) ;=> 431
(parse-integer "111" :radix 2) ;=> 7
- 1. 基本Lisp宏問題
- 2. 從enable_if'd基地
- 3. 從基地
- 4. 不識別基本的LISP函數
- 5. 從基地鑄造?
- 6. 不從LISP /計劃
- 7. 的Emacs Lisp:從路徑
- 8. 如何轉換從Java的任何基地到基地10
- 9. 從表中基於某些字段
- 10. LISP如何從列表中刪除某個索引處的元素
- 11. Casating從派生基地,ambiguouty
- 12. 從FQDN創建基地dn?
- 13. 將DOM從某個地方移除到某個地方的HTML輸出
- 14. Common Lisp a Lisp-n?
- 15. 在LISP中遞歸地從列表中獲取數據
- 16. 從Ruby/Rails調用Lisp?
- 17. 在JavaScript中從一個基地轉換爲另一個基地
- 18. Common Lisp:有效地添加嵌套plist
- 19. 什麼Lisp更好地解析?
- 20. 樣本從陣列元素的基地
- 21. 指定SQLAlchemy的 「基地」 從表
- 22. 使用COUT打印從某地方
- 23. Lisp接受值(Lisp新手)
- 24. 從類轉換模板從類繼承基類到基地
- 25. Lisp中的關聯列表 - 從
- 26. 從lisp的socket-stream讀取線
- 27. 從On Lisp學習宏中的宏
- 28. 基本的LISP遞歸,枚舉大於3的值
- 29. Lisp:基本的面向對象的計數器
- 30. 從10個基地遞歸函數的基地號碼轉換器 - C
相關(打算在其他DIRECTI上):你的問題,[轉換在基座10的整數成在Lisp中1和9之間的任意基](http://stackoverflow.com/q/33634012/1281433)中,從22小時前。 –
@AniFlorinAdrian這是一個非常簡單的問題,除非你沒有采取任何措施。你可以谷歌「lisp整數基地」,並迅速提出了一個解決方案。 – tonso