Clojure 将字节数组的大小前置到字节数组
我有一个字节数组,例如:Clojure 将字节数组的大小前置到字节数组,clojure,Clojure,我有一个字节数组,例如: (def g (byte-array (map byte [0 1 2 3]))) 如何获取它的大小,以及如何将此大小预先添加到g字节数组中?不确定预先添加大小是什么意思,但您可以使用count user=> (def g (byte-array (map byte [0 1 2 3]))) #'user/g user=> (count g) 4 不确定您对预先设置大小的含义,但您可以使用count user=> (def g (byte-arra
(def g (byte-array (map byte [0 1 2 3])))
如何获取它的大小,以及如何将此大小预先添加到g字节数组中?不确定预先添加大小是什么意思,但您可以使用
count
user=> (def g (byte-array (map byte [0 1 2 3])))
#'user/g
user=> (count g)
4
不确定您对预先设置大小的含义,但您可以使用
count
user=> (def g (byte-array (map byte [0 1 2 3])))
#'user/g
user=> (count g)
4
预弯部分可以这样做(可能不是最好的解决方案): 它返回:
[4, 0, 1, 2, 3]
我认为应该使用(alength g)
表示Java数组的长度
当然,如果字节数组的长度超过255,则在将长度添加为单个字节时会遇到问题。可以这样做预结束部分(可能不是最佳解决方案): 它返回:
[4, 0, 1, 2, 3]
我认为应该使用(alength g)
表示Java数组的长度
当然,如果字节数组的长度超过255,则在将长度添加为单个字节时会遇到问题。
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)))
a长度
将为您提供尺寸
您必须创建一个新的数组来预处理它。下面是:
(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)))
谢谢,我的意思是将大小添加到数组的开头。对于google协议缓冲区。谢谢,我的意思是将大小添加到数组的开头。对于google协议缓冲区。可能是
(字节数组(cons(->g count byte)g))
?如果您需要强制转换所有内容,请使用(->)(cons(count g)g)(map byte)byte array)
可能是这样的:(def g(->[01 2 3](#(cons(count%)%))(map byte)(byte array))
可能(byte array(cons(->g count byte)g))
?或者如果您需要强制转换所有内容,则可以使用以下方式:(cons(count g)g)(map byte)(byte array))(def g(->[0 1 2 3](#(cons(count%)%))(map byte)(byte array))