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

标签 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 时,我都想这样做。我该怎么做?

最佳答案

假设-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/

相关文章:

java - 我无法使用 Gradle、Dropwizard 和 IntelliJ 调试 JavaEE 应用程序

javascript - 替换文本区域中的特定单词并突出显示更改?

c++ - 如何去掉 QString 中的括号及其内容?

go - 为什么我说 8 时 Golang 不给我 8 个字节?

.net - 结构到字节数组以通过套接字发送

java - 清除 Activity 堆栈。首次运行 Activity

java - Java中替换没有特定前缀和后缀的字符串

java - 文件的直接行计数(ByteStream) - JAVA

function - lua中算术运算字符串的分割

java - 将字节数组转换为十进制