这个问题在这里已经有了答案:
How to display numbers in different bases under elisp?
(1 个回答)
7年前关闭。
我想将数字转换为二进制字符串,例如(到二进制 11)->“1011”。
我已经找到了一种转换为十六进制和八进制的方法:
(format "%x" 11) -> "B"
(format "%o" 11) -> "13"
但显然没有二进制格式字符串(“%b”给出错误)。
反过来转换也很简单:(string-to-number "1011"2) -> 11
有没有其他库函数可以做到这一点?
最佳答案
虽然我同意这是功能的重复,但如果您询问如何在 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))
关于emacs - 将数字转换为 base-2(二进制)字符串表示形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20568684/