如何在elisp下显示不同基数的数字?

Viv*_*odo 8 emacs elisp

如我们所知,elisp支持不同基数的数字,例如#20r1j等于基数为10的数字.我希望显示#20r1j#20r1j.但是(format "%d" #20r1j)给了我39.如何将号码保留在原来的基础上?

phi*_*ils 10

作为格式字符串,您可以显示的基础非常有限:

%d表示以十进制数字打印(%o八进制,%x十六进制).
%X与%x类似,但使用大写.

您可以使用calc库为您管理,但是:

(require 'calc-bin)

(let ((calc-number-radix 20))
  (math-format-radix 39))
"1J"

(let ((calc-number-radix 20))
  (math-format-radix #20r1j))
"1J"
Run Code Online (Sandbox Code Playgroud)

与您正在使用的读取语法一样,允许的值calc-number-radix从2到36运行.