2014-02-13 30 views
2

我試圖轉換以下JSJava什麼是JS push,concat,unshift的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,CONCAT以某種addAll,但什麼是unshift?在java中我的變量是什麼類型?

回答

3

這就像你正在試圖用一個字節緩衝區連載一些數據。

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包不支持。

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

+0

請參閱@ PeterLawrey的回答。他比我好。 –

1

您可以使用字節的數組列表。

ArrayList<Byte> sequence = new ArrayList<Byte>; 

要添加到一個ArrayList使用的結尾:

sequence.add(item); 

要添加到前面使用:

sequence.add(0, item); 
相關問題