如何将字节数组的内容分割成字符串数组?
例如 有 字节数组内容是 : 123 0xff0xff 456 oxffoxff 789 用 0xff0xff 作为 分割符 ,分割后放在字符串数组中 例如 : str[0]="123" str[1]="456"  str[2]="789" 

解决方案 »

  1.   

    String[10] result;
    byte[] arr = {1,2,3, 0xff,0xff ,4,5,6 ,oxff,oxff ,7,8,9 };
    int j =0;
    for (int i = 0; i < arr.length; i++){
    if((int) arr[i] == (int) oxff) j++;
    else {
    result[j] += (int) arr[i];
    }
    }
      

  2.   

    public class Demo
    {
    public static void main(String[] args)
    {
    String str="123 0xff0xff 456 0xff0xff 789 ";
    String[] temp=str.split(" ");
    StringBuilder sb=new StringBuilder();
    for (int i = 0; i < temp.length; i++)
    {
    sb.append(temp[i]);
    }
    String newStr=sb.toString();
    String[] result=newStr.split("0xff0xff");
    for(String re:result)
    {
    System.out.println(re);
    }
    }
    }
      

  3.   


    import java.util.Arrays;public class Test { public static void main(String[] args) {
    byte[] arr = { 1, 2, 3, (byte) 0xFF, (byte) 0xFF, 4, 5, 6, (byte) 0xFF,
    (byte) 0xFF, 7, 8, 9 };
    System.out.println(Arrays.toString(fun1(arr)));
    System.out.println(Arrays.toString(fun2(arr)));
    } static String[] fun1(byte[] arr) {
    String flag = "\n";
    StringBuilder sb = new StringBuilder();
    for (byte b : arr) {
    if (b != (byte) 0xFF) {
    sb.append(Byte.toString(b));
    } else {
    sb.append(flag);
    }
    }
    String[] result = sb.toString().split(flag + flag);
    return result;
    } static String[] fun2(byte[] arr) {
    byte flag = (byte) 0xFF;
    int count = 0;
    for (byte b : arr) {
    if(b == flag) ++count;
    }
    String[] result = new String[count / 2 + 1];
    for(int i = 0;i < result.length;++i){
    result[i] = "";
    }
    for(int i = 0,j = 0;i < arr.length;++i){
    if(arr[i] != flag) result[j / 2] += Byte.toString(arr[i]);
    else ++j;
    }
    return result;
    }
    }