在Clojure中将整数中的所有32位获取为字符串格式

chr*_*788 0 clojure

我需要将 Clojure 中的 Integer 的所有 32 位都转换为 String 格式。

当前:(整数/toBinaryString 10)->“1010”

所需:(整数/toBinaryString 10)->“0000000000001010”

我怎样才能轻松有效地做到这一点?

Ste*_*ott 7

对于无符号整数,可以clojure.pprint/cl-format直接使用。此示例格式化n为至少 32 个字符的二进制字符串,左填充0字符:

(require '[clojure.pprint :as pp])

(defn unsigned-binary-32 [n]
  (pp/cl-format nil "~32,'0B" n))
Run Code Online (Sandbox Code Playgroud)

对于有符号整数,需要更多一点:

(defn signed-binary-32 [n]
  (unsigned-binary-32 (bit-and n 0xffffffff)))
Run Code Online (Sandbox Code Playgroud)