2012-02-22 101 views
0

這是針對遊戲中的關卡系統。 水平由兩個字節的數組:
byte[] tilesbyte[] data
tiles保持瓷磚的id和data保持數據。將長串拆分爲字節數組

我創建了一個函數來製作一個字符串。它的格式如下tileId:tileData,tileId:tileData,tileId:tileData,etc
這裏你可以看到一個完整的水平的一個例子:http://pastebin.com/X2LG7e80

腳本是這樣的:

public String toString() { 
    String s = ""; 
    StringBuilder sb = new StringBuilder(); 
    for (int t = 0; t < tiles.length; t++) { 
     sb.append(tiles[t]).append(":").append(data[t]).append(t == tiles.length - 1 ? ";" : ","); 
    } 
    s = sb.toString(); 
    return s; 
} 

現在我需要一種方法來把它放回兩個字節數組。
我嘗試了幾種不同的東西,但都沒有工作。

+0

你所描述該程序的方式,這聽起來像的每個數據值是一個字節。這是否準確?我可以將瓷磚ID想象成單個字節,但每個瓷磚的數據是單個字節是令人驚訝的。 – gsteff 2012-02-22 17:33:52

+0

「我嘗試了幾種不同的東西,但都沒有成功。」 - 你可以發佈一些你已經做過的嘗試嗎? – ggrigery 2012-02-22 17:56:28

回答

0

假設變量stringRep包含字符串表示:

String stringRep = "tileId:tileData,tileId:tileData,tileId:tileData"; 


String[] pairs = stringRep.split(","); 
byte[] tiles = new byte[pairs.length]; 
byte[] data = new byte[pairs.length]; 

int i = 0; 
for(String pair : pairs){ 
    String[] pairParts = pair.split(":"); 
    titles[i] = Byte.parseByte(pairParts[0]); 
    data[i] = Byte.parseByte(pairParts[1]); 
    i++; 
} 
+0

謝謝,正是我需要的! – Fuze 2012-02-22 20:30:41

+0

沒有問題,一定要標記綠色的複選框,並選擇這個作爲正確的答案,如果它爲你工作。 – ggreiner 2012-02-22 22:11:33