我有一个字节数组,例如:
(def g (byte-array (map byte [0 1 2 3])))
如何获得它的大小以及如何将此大小添加到g字节数组?
答案 0 :(得分:3)
alength
会为您提供尺寸。
您必须创建一个新数组才能添加它。这是:
(def g' (let [len (alength g)
bs (byte-array (inc len))]
(do (System/arraycopy g (int 0) bs (int 1) len)
(aset bs (int 0) len)
bs)))
答案 1 :(得分:2)
前置部分可以像这样完成(可能不是最佳解决方案):
(def g (byte-array (apply #(cons (byte (count %)) %) [(map byte [0 1 2 3])])))
它返回:
[4, 0, 1, 2, 3]
我认为您应该使用(alength g)
作为Java数组的长度。
当然,如果你的字节数组超过255,那么将长度添加为单个字节会有问题。
答案 2 :(得分:0)
不确定您在预设大小时的意思,但您可以使用count
user=> (def g (byte-array (map byte [0 1 2 3])))
#'user/g
user=> (count g)
4