在clojure中获取角色的UTF-8十六进制代码

时间:2012-10-24 01:27:48

标签: utf-8 clojure

我似乎无法弄清楚如何在clojure中获取字符的UTF-8十六进制代码。我得到的最接近的结果是尝试(int \Д),但它返回1044而不是0414D094。我将用什么来获得后者的结果?

提前致谢!

编辑:我没说清楚,但我需要UTF-8十六进制字符串,所以我需要D094而不是0414。我打算将十六进制代码从D094转换为_D0_94用于标签打印机(我知道它有点icky - 我自己并不喜欢它:P)

3 个答案:

答案 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"

是一种选择。虽然没有领先的零。