2013-12-13 32 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)) 
相关问题