我正在尝试将以下JS
转换为Java
:
serializeSig:function(r,s){
var rBa=r.toByteArraySigned();
var sBa=s.toByteArraySigned();
var sequence=[];
sequence.push(2);
sequence.push(rBa.length);
sequence=sequence.concat(rBa);
sequence.push(2);
sequence.push(sBa.length);
sequence=sequence.concat(sBa);
sequence.unshift(sequence.length);
sequence.unshift(48);
return sequence
}
我认为push
会转换为add
,与某种addAll
相关联,但unshift
是什么?我的变量在java中的类型是什么?
答案 0 :(得分:4)
myArray.unshift(obj)
对应myList.add(0, obj)
。
Java中的字节数组是byte[]
。字节数组列表为List<byte[]>
。 (那是java.util.List
,而不是java.awt.List
,以防您导入错误。)
编辑:看起来你正在尝试创建一个字节数组,而不是字节数组列表。在这种情况下,您应该使用java.nio.ByteBuffer
,或者可能使用java.io.ByteArrayOutputStream
。后者必须按顺序编写 - 你不能相当于unshift
。
答案 1 :(得分:3)
看起来您正在尝试使用ByteBuffer来序列化某些数据。
public static void serialize(ByteBuffer bb, String r, String s) {
bb.put(48);
int start = bb.position();
bb.put(0); // padding.
bb.put(2);
byte[] rBa = r.getBytes();
bb.put((byte) rBa.length);
bb.put(rBa);
byte[] sBa = s.getBytes();
bb.put((byte) sBa.length);
bb.put(sBa);
bb.put(start, (byte) (bb.position() - start - 1));
}
使用List<Byte>
效率非常低,并且不支持执行IO的程序包。
答案 2 :(得分:1)
你可以使用Bytes的arraylist。
ArrayList<Byte> sequence = new ArrayList<Byte>;
要添加到arraylist的末尾使用:
sequence.add(item);
添加到正面使用:
sequence.add(0, item);