获取clojure中字符的UTF-8十六进制代码

获取clojure中字符的UTF-8十六进制代码,utf-8,clojure,Utf 8,Clojure,我似乎不知道如何在clojure中获取字符的UTF-8十六进制代码。我最接近相关结果的方法是尝试int\crmk_,但它返回的是1044,而不是0414或D094。我将使用什么来获得后一个结果 提前谢谢 编辑:我没有说清楚,但我需要UTF-8十六进制字符串,所以我需要D094而不是0414。对于标签打印机,我将把十六进制代码从D094转换为_D0_94。我知道这有点讨厌——我自己也不太喜欢它:P如果您只是在查找组成字节: (-> (char 1044) str (.getBytes "UT

我似乎不知道如何在clojure中获取字符的UTF-8十六进制代码。我最接近相关结果的方法是尝试int\crmk_,但它返回的是1044,而不是0414或D094。我将使用什么来获得后一个结果

提前谢谢


编辑:我没有说清楚,但我需要UTF-8十六进制字符串,所以我需要D094而不是0414。对于标签打印机,我将把十六进制代码从D094转换为_D0_94。我知道这有点讨厌——我自己也不太喜欢它:P

如果您只是在查找组成字节:

(-> (char 1044) str (.getBytes "UTF-8"))
如果需要字符串化代码,只需将每个字节转换为十六进制表示形式,并将它们连接起来:

(defn stringify-bytes [bytes] (->> bytes (map (partial format "%02x")) (apply str)))

如果只是在组成字节之后:

(-> (char 1044) str (.getBytes "UTF-8"))
如果需要字符串化代码,只需将每个字节转换为十六进制表示形式,并将它们连接起来:

(defn stringify-bytes [bytes] (->> bytes (map (partial format "%02x")) (apply str)))
这是一种选择。但是没有前导零

这是一种选择。但是没有前导零。

我将加入:

user=> (format "%04x" (int \Д))
"0414"
我将参加:

user=> (format "%04x" (int \Д))
"0414"

后者相当完美,但似乎有些过分。在clojure中真的有那么复杂吗?别介意前面的评论。我读了一些关于UTF-8的文章,似乎这是必要的。就在apply调用之前,我为打印机添加了下划线。谢谢后者相当完美,但似乎有些过分。在clojure中真的有那么复杂吗?别介意前面的评论。我读了一些关于UTF-8的文章,似乎这是必要的。就在apply调用之前,我为打印机添加了下划线。谢谢差不多就是这样。从unicode代码点到utf-8十六进制代码有什么办法吗?差不多就是这样。从unicode代码点到utf-8十六进制代码有什么办法吗?