我想将数字转换为二进制字符串,例如 (to-binary 11) -> "1011"。
我已经找到了一种转换为十六进制和八进制的方法:
(format "%x" 11) -> "B"
(format "%o" 11) -> "13"
Run Code Online (Sandbox Code Playgroud)
但显然没有二进制格式字符串(“%b”给出错误)。
反过来转换也很简单:(string-to-number "1011" 2) -> 11
有没有其他库函数可以做到这一点?
虽然我同意这是功能的重复,但如果您询问如何在 Emacs lisp 中进行位操作,您可以阅读有关按位操作的手册。这可能导致这样的实现:
(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))
Run Code Online (Sandbox Code Playgroud)