我正在将 clojure 中的字节数组转换为字符串,我遇到了一个奇怪的问题,我不知道原因。
字节数组定义为
(def a (byte-array (byte 72) (byte 105)))
当我将它转换成它显示的矢量时
(vec a)
output: (105, 105, 105, ......68 times ...., 105)
输出是一个包含 72 个元素的 105 数组。为什么会这样?我正在尝试将字节数组转换为字符串并使用
(String. (byte-array (byte 72) (byte 105)))
产量为 72 i。另一方面,当我这样做时
(map char [(byte 72) (byte 105)])
我得到了输出 H 和 I。这就是我试图将字节数组转换为向量的原因。如果有另一种方法,请告诉我。
最佳答案
您正在调用二元版本,因此您的第一个参数
设置要创建的数组的 size
并且您的第二个参数是
没有序列,所以它被认为是 init-val
;见:
user=> (doc byte-array)
-------------------------
clojure.core/byte-array
([size-or-seq] [size init-val-or-seq])
Creates an array of bytes
初始值也取自一个序列(作为参数名称 建议)。所以你可以这样做:
user=> (String. (byte-array [(byte 72) (byte 105)]))
"Hi"
关于arrays - 在clojure中将字节转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60127861/