‘liusuyi’
2023-11-03 85b0ee4bae215560010d0e6d0641705923a1aaa3
src/main/java/com/ard/utils/other/ByteUtils.java
@@ -5,7 +5,10 @@
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.charset.StandardCharsets;
import java.util.zip.CRC32;
import static oracle.security.pki.util.SignatureAlgorithms.i;
/**
 * @Description: 字节工具类
@@ -27,20 +30,13 @@
     * byte数组转中文字符串
     */
    public static String bytesToStringZh(byte[] bytes) {
        String zhStr = "";
        ByteBuffer buffer = ByteBuffer.wrap(bytes); // byteArray 是包含字节数组的变量
        try {
            int position = ByteUtils.findIndexOfDoubleZero(bytes);
            if (position != -1) {
                byte[] result = new byte[position];
                System.arraycopy(bytes, 0, result, 0, position);
                zhStr = new String(result, "GBK");
            } else {
                zhStr = new String(bytes, "GBK");
            }
            return new String(buffer.array(), "GBK");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return zhStr;
        return "";
    }
    /**
@@ -71,19 +67,18 @@
     * byte数组转整型
     */
    public static int bytesToDecimal(byte[] byteArray) {
        int decimalValue = 0;
        for (int i = 0; i < byteArray.length; i++) {
            decimalValue = (decimalValue << 8) | (byteArray[i] & 0xFF);
        }
        return decimalValue;
        ByteBuffer buffer = ByteBuffer.wrap(byteArray); // byteArray 是包含字节数组的变量
        return buffer.getInt();
    }
    /**
     * byte数组转Double
     */
    public static double bytesToDouble(byte[] byteArray) {
        // 创建一个ByteBuffer并设置字节顺序为大端
        // 创建一个ByteBuffer
        ByteBuffer buffer = ByteBuffer.wrap(byteArray);
        //设置字节顺序为大端
        buffer.order(ByteOrder.LITTLE_ENDIAN);
        // 从ByteBuffer中获取double值
        double doubleValue = buffer.getDouble();
@@ -124,17 +119,19 @@
        return buffer.array();
    }
    /**
     * double转byte数组
     */
    public static byte[] doubleToBytes(double d) {
        long value = Double.doubleToRawLongBits(d);
        byte[] byteRet = new byte[8];
        for (int i = 0; i < 8; i++) {
            byteRet[i] = (byte) ((value >> 8 * i) & 0xff);
        }
        return byteRet;
        // 创建一个 ByteBuffer,分配足够的空间来存储一个 float 值
        ByteBuffer buffer = ByteBuffer.allocate(Double.BYTES);
        // 将 float 值写入 ByteBuffer
        buffer.putDouble(d);
        // 获取字节数组
        return buffer.array();
    }
    /**
     * float转byte数组
     */
@@ -146,6 +143,7 @@
        // 获取字节数组
        return buffer.array();
    }
    /**
     * byte数组拼接
     */