每次遇到值“-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 时,我都想这样做。我该怎么做?
最佳答案
假设-15
的随机出现,你需要一个动态数组,在java中是一个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()
List
的方法| .如果你想要 List<byte[]>
,您需要手动阅读 data
在 if block 中。
关于java - 拆分一个字节数组...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9576282/