2012-02-22 70 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