zoukankan      html  css  js  c++  java
  • byte[] 数组 拆包

    code

    package test;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class Test09 {
        public static void main(String[] args) {
            byte[] bytes = new byte[]{-22, -21, 0, 0, 0, 42, 0, 7, 1, 67, 58, 92, 86, 105, 100, 101, 111, 82, 101, 99, 92, 73, 109, 97, 103, 101, 92, 50, 48, 50,
                    48, 49, 50, 49, 55, 50, 50, 50, 53, 51, 53, 54, 54, 54, 46, 106, 112, 103, 96, -22, -21, 0, 0, 0, 42, 0, 8, 2, 67, 58, 92, 86, 105, 100, 101,
                    111, 82, 101, 99, 92, 73, 109, 97, 103, 101, 92, 50, 48, 50, 48, 49, 50, 49, 55, 50, 50, 50, 53, 51, 53, 55, 50, 57, 46, 106, 112, 103, 98,
                    -22, -21, 0, 0, 0, 42, 0, 8, 2, 67, 58, 92, 86, 105, 100, 101,
                    111, 82, 101, 99, 92, 73, 109, 97, 103, 101, 92, 50, 48, 50, 48, 49, 50, 49, 55, 50, 50, 50, 53, 51, 53, 55, 50, 57, 46, 106, 112, 103, 98};
    
            List<byte[]> unboxing = unboxing(bytes);
            for (byte[] b1 : unboxing) {
                System.out.println(Arrays.toString(b1));
            }
        }
    
        private static List<byte[]> unboxing(byte[] bytes) {
            List<byte[]> list = new ArrayList<>();
            //记录每次截取的开始位置
            int start = 0;
            //int i = start + 2  跳过第一次匹配的开始位置
            for (int i = start + 2; i < bytes.length; i++) {
                if (bytes[i] == (byte) -22 && bytes[i + 1] == (byte) -21) {
                    byte[] b1 = new byte[i - start];
                    System.arraycopy(bytes, start, b1, 0, b1.length);
                    list.add(b1);
                    start = i;
                }
            }
            //截取最后一条数据
            if (start < bytes.length) {
                byte[] b1 = new byte[bytes.length - start];
                System.arraycopy(bytes, start, b1, 0, b1.length);
                list.add(b1);
            }
            return list;
        }
    }
    
    
  • 相关阅读:
    网络编程之UDP
    深入浅出Object.defineProperty()
    Vue知识点总结
    JS基础-垃圾回收机制与内存泄漏的优化
    JS基础-作用域
    ES6知识点
    JS基础-this
    JS基础-事件循环机制
    JS基础-事件
    JS基础-事件队列
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/14154065.html
Copyright © 2011-2022 走看看