Android开发中常用到的一些工具类方法整理

此博客会一直更新,整理一些开发中使用的utils方法,年纪大了,整理出来以后用的时候可以直接拿过来。

1、int[]数组转换成byte[]数组

    /**
     * int[]转换成byte[]
     * @param intArray int[]
     * @return byte[]
     */
    public static byte[] intsToBytes(int[] intArray) {
        if (intArray == null || intArray.length == 0) {
            return null;
        }
        int size = intArray.length;
        byte[] value = new byte[size];
        for (int i = 0; i < size; i++) {
            value[i] = (byte) intArray[i];
        }
        return value;
    }

2、byte[]数组转换成Integer[]数组

    /**
     * 将byte[]转换成Integer[]
     * @param byteArray byte[]
     * @return Integer[]
     */
    public static Integer[] bytesToIntegers(byte[] byteArray) {
        if (byteArray == null || byteArray.length == 0) {
            return null;
        }
        int size = byteArray.length;
        Integer[] value = new Integer[size];
        for (int i = 0; i < size; i++) {
            value[i] = (int) byteArray[i];
        }
        return value;
    }

3、int[]转换成int

    /**
     * int[]转换成int
     * @param intArray int[]
     * @return int
     */
    public static int intsToInt(int[] intArray) {
        if (intArray == null) {
            return -1;
        }
        int value = -1;
        switch (intArray.length) {
            case 1:
                value = intArray[0];
                break;
            case 2:
                value = ((intArray[0] & 0xFF) << 8) | (intArray[1] & 0xFF);
                break;
            case 3:
                value = ((intArray[0] & 0xFF) << 16) | ((intArray[1] & 0xFF) << 8) | (intArray[2] & 0xFF);
                break;
            case 4:
                value = ((intArray[0] & 0xFF) << 24) | ((intArray[1] & 0xFF) << 16) | ((intArray[2] & 0xFF) << 8) | (intArray[3] & 0xFF);
                break;
            default:
                if (DEBUG) Log.e(TAG, "该条SPI消息数据长度超过4位了");
                break;
        }
        return value;
    }

4、String转GBK格式的int[]

    /**
     * String转GBK格式的int[]
     * @param value String
     * @return GBK格式的int[]
     */
    public static Integer[] strToGBKInts(String value) {
        if (TextUtils.isEmpty(value)) {
            Log.w(TAG, "strToGBKInts:value is null!");
            return new Integer[]{};
        }
        Integer[] ints = null;
        try {
            byte[] bytes = value.getBytes("GBK");
            ints = new Integer[bytes.length];
            for (int i = 0; i < bytes.length; i++) {
                ints[i] = bytes[i] & 0xFF;
            }
        } catch (UnsupportedEncodingException e) {
            Log.e(TAG, "strToGBKInts error ", e);
        }
        return ints;
    }

5、在指定数组中的指定元素位置 插入指定元素

    /**
     * 在指定数组中的指定元素位置 插入指定元素
     * @param arr   这里需要插入一个指定数组作为源数组供查询
     * @param index 指定数组中的指定元素下标
     * @param num   指定数组指定元素位置插入的指定元素
     * @return data 插入完成数据
     */
    public static Integer[] insertData(Integer[] arr, int index, int num) {
        Integer[] data = new Integer[arr.length + 1];
        System.arraycopy(arr, 0, data, 0, index);
        data[index] = num;
        System.arraycopy(arr, index, data, index + 1, arr.length - index);
        return data;
    }

6、数组合并

    /**
     * 数组合并
     *
     * @param first 第一个数组
     * @param rest  其余数组
     * @param <T>   泛型
     * @return 合并后的数组
     */
    @SafeVarargs
    public static <T> T[] concatAll(T[] first, T[]... rest) {
        int totalLength = first.length;
        for (T[] array : rest) {
            totalLength += array.length;
        }
        T[] result = Arrays.copyOf(first, totalLength);
        int offset = first.length;
        for (T[] array : rest) {
            System.arraycopy(array, 0, result, offset, array.length);
            offset += array.length;
        }
        return result;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值