将数字转换为base-2(二进制)字符串表示形式

时间:2013-12-13 14:17:30

标签: emacs elisp

我想将数字转换为二进制字符串,例如(to-binary 11) - > “1011”。

我已经找到了转换为hex和oct的方法:

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

但显然没有二进制格式字符串(“%b”给出错误)。

转换很简单:(字符串到数字“1011”2) - > 11

还有其他库函数吗?

1 个答案:

答案 0 :(得分: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))