Abh*_*Pal 2 arrays string clojure
我正在将 clojure 中的字节数组转换为字符串,但我面临一个奇怪的问题,我不知道原因。
字节数组定义为
(def a (byte-array (byte 72) (byte 105)))
Run Code Online (Sandbox Code Playgroud)
当我将其转换为矢量时,它会显示
(vec a)
Run Code Online (Sandbox Code Playgroud)
输出:(105、105、105、......68次......、105)
输出是一个包含 72 个元素的 105 个数组。为什么会这样?我正在尝试将字节数组转换为字符串并使用
(String. (byte-array (byte 72) (byte 105)))
Run Code Online (Sandbox Code Playgroud)
产生 72 个 i。另一方面,当我做
(map char [(byte 72) (byte 105)])
Run Code Online (Sandbox Code Playgroud)
我得到输出 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
Run Code Online (Sandbox Code Playgroud)
此外,初始值取自序列(如参数名称所示)。所以你可以这样做:
user=> (String. (byte-array [(byte 72) (byte 105)]))
"Hi"
Run Code Online (Sandbox Code Playgroud)