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