我正在使用Clojure处理一些二进制格式,其中检查十六进制格式的数字(0x10
)是有意义的。如何配置Clojure以将数字呈现为十六进制,默认情况下?在REPL中,这可能与我最相关,但我也对更一般的机制感兴趣。
答案 0 :(得分:7)
Clojure使用多种方法打印数据:print-method
(旨在提供人类可以读取的输出)和print-dup
(产生可以通过读取解析的输出)。
因此,对于REPL,您可以简单地为java.lang.Number
提供print-method的实现,就像在下面的REPL会话中一样:
123
=> 123
(prn 123)
123
=> 123
(defmethod print-method Number
[n ^java.io.Writer w]
(.write w (format "0x%X" n)))
=> #object[clojure.lang.MultiFn 0x52ad430a "clojure.lang.MultiFn@52ad430a"]
123
=> 0x7B
(prn 123)
0x7B
=> nil