2013-12-13 36 views
2

我想將數字轉換爲二進制字符串,例如(to-binary 11) - >「1011」。將數字轉換爲基數2(二進制)字符串表示

我已經找到一種方法來轉換爲十六進制和OCT:

(format "%x" 11) -> "B" 
(format "%o" 11) -> "13" 

但顯然沒有格式字符串爲二進制文件(「%B」給出了一個錯誤)。

轉化爲簡單的倒過來:(字符串到數字「1011」 2) - > 11

是否有任何其他的庫函數來做到這一點?

回答

3

雖然我同意這是一個功能的重複,但如果您問的是如何在Emacs Lisp中進行位操作,您可以閱讀bitwise operations上的手冊。這可能導致實施如此:

(defun int-to-binary-string (i) 
    "convert an integer into it's binary representation in string format" 
    (let ((res "")) 
    (while (not (= i 0)) 
     (setq res (concat (if (= 1 (logand i 1)) "1" "0") res)) 
     (setq i (lsh i -1))) 
    (if (string= res "") 
     (setq res "0")) 
    res)) 
相關問題