arrays - 在clojure中将字节转换为字符串

标签 arrays string clojure

我正在将 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/

相关文章:

二维字符串数组的 C 内存布局

c++ - [C++] 将一个字符串分割成由另一个字符串中给出的符号以外的任何分隔符分隔的字符串?

c# - FormatException 错误字符串到日期时间

Clojure 新手 - 命名空间问题

json - Compojure ring-json 不返回 json

clojure:如何将命名空间作为宏参数传递?

Java Pdf 生成和下载

java - 如何通过在java中的空位置添加零来使两个不相等的二维数组相等?

python - 如何在不遇到 MemoryError 的情况下逐步将一个巨大的字节数组写入文件

c++ - 如何将文本文件中的数据读入结构数组