Clojure的带
#uuid标签文字是对的传递
java.util.UUID/fromString。并且,
fromString将其除以“-”并将其转换为两个
Long值。(UUID的格式已标准化为8-4-4-4-12十六进制数字,但“-”实际上仅用于验证和视觉识别。)
直接的解决方案是重新插入“-”并使用
java.util.UUID/fromString。
(defn uuid-from-string [data] (java.util.UUID/fromString (clojure.string/replace data #"(w{8})(w{4})(w{4})(w{4})(w{12})" "$1-$2-$3-$4-$5")))如果您想要没有正则表达式的内容,则可以使用
ByteBuffer和
DatatypeConverter。
(defn uuid-from-string [data] (let [buffer (java.nio.ByteBuffer/wrap (javax.xml.bind.DatatypeConverter/parseHexBinary data))] (java.util.UUID. (.getLong buffer) (.getLong buffer))))



