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

标签 emacs elisp

这个问题在这里已经有了答案:





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/

相关文章:

macos - 仅当从 emacs 调用时才会出现 Imagemagick(转换)错误

在 Emacs 上调试 Maxima CAS Lisp 代码

emacs - Gdb 与 emacs 和 F*

php - 配置 Emacs 以进行 Web 开发 (PHP)

emacs - 如何在 minibuffer 中输入一个空格而不是完成一个单词?

Emacs 点对语法改进

emacs - 如何在 Emacs 中将一个函数重新映射到另一个函数?

Emacs shell-模式 : Prevent RET sending input from anywhere

python - 使用 emacs-jedi 自动导入模块

Elisp:在 let 中引用以前的变量