在clojure中打印数字的二进制值

zca*_*ate 8 clojure

我们可以代表人数122r001100Clojure中.

2r001100给定数字12时是否有内置函数可供打印?

jbo*_*man 18

java.lang.Integer/toString将打印具有任意基数的数字:

(Integer/toString 0xf2 2)  ==> "11110010"
(Integer/toString 0xf2 16) ==> "f2"
(Integer/toString 0xf2 27) ==> "8q"
Run Code Online (Sandbox Code Playgroud)


edb*_*ond 11

cl-format

user=> (require '[clojure.pprint :refer (cl-format)])
nil
user=> (cl-format nil "2r~6,'0',B" 12)
"2r001100"
Run Code Online (Sandbox Code Playgroud)

  • 这很好,但不会打印负输入数字的二进制补码表示. (3认同)

Ali*_*Lee 8

这些函数使用java.util.Formatter生成和打印字符串.

但他们不做二进制,所以我能想到的最好的是:

(fn [i] (str "2r" (Integer/toBinaryString i)))
Run Code Online (Sandbox Code Playgroud)