每当我遇到值“-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 ..我该怎么做?
答案 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[]>
。