拆分一个字节数组......?

时间:2012-03-06 00:38:29

标签: java split bytearray

每当我遇到值“-15”时,我想把它放在一个新的字节数组中...我该怎么做?我想我只是累了,让我感到困惑和努力...请帮助...代码如下:

    fileContent = "S107184CB78120EA52S107184CB78120EA57"; 
    int len = fileContent.length(); 
    byte[] data = new byte[len/2]; 
    for (int i = 0; i < len; i += 2) 
    {
        data[i / 2] = (byte) ((Character.digit(fileContent.charAt(i), 16) << 4) + Character.digit(fileContent.charAt(i+1), 16));
    }

这将给我以下内容:[ - 15,7,24,76,-73,-127,32,-22,82,-15,7,24,76,-73,-127,32, -22,87]

我想从这里得到的是将每个元素从-15直到下一个-15(但不包括它)放在一个单独的字节数组中。我希望每次遇到另一个时都这样做-15 ..我该怎么做?

1 个答案:

答案 0 :(得分:3)

假设-15是随机出现的,你需要一个动态数组,在java中是List。 一旦收集了所有元素,就可以轻松地将List转换为数组。

它看起来像这样:

String fileContent = "S107184CB78120EA52S107184CB78120EA57";
int len = fileContent.length();
List<Byte[]> arrays = new ArrayList<Byte[]>();
List<Byte> data = new ArrayList<Byte>();
for (int i = 0; i < len; i += 2) {
    byte b = (byte) ((Character.digit(fileContent.charAt(i), 16) << 4) + Character.digit(fileContent.charAt(i + 1), 16));
    if (b == -15) {
        arrays.add(data.toArray(new Byte[data.size()]));
        data.clear();
    }
    data.add(b);
}
arrays.add(data.toArray(new Byte[data.size()]));

请注意,这会创建List<Byte[]>,而不是List<byte[]>。我选择这个是因为我可以使用.toArray()的{​​{1}}方法。如果您需要List,则需要在if块中手动识别List<byte[]>