我似乎无法弄清楚如何在 clojure 中获取字符的 UTF-8 十六进制代码。我最接近相关结果的是尝试(int \Д)
,但它返回1044
而不是0414
or D094
。我会用什么来获得后一个结果?
提前致谢!
编辑:我没有说清楚,但我需要 UTF-8 十六进制字符串,所以我需要D094
而不是0414
. 我要将标签打印机的十六进制代码转换D094
为_D0_94
(我知道这有点恶心 - 我自己并不完全喜欢它:P)
我将加入:
user=> (format "%04x" (int \Д))
"0414"
如果您只是在组成字节之后:
(-> (char 1044) str (.getBytes "UTF-8"))
如果您想要字符串化代码,只需将每个字节转换为其十六进制表示并将它们连接起来:
(defn stringify-bytes [bytes] (->> bytes (map (partial format "%02x")) (apply str)))
user> (Integer/toHexString (int \Д))
"414"
是一种选择。虽然没有前导零。