‘liusuyi’
2023-11-03 85b0ee4bae215560010d0e6d0641705923a1aaa3
src/main/java/com/ard/utils/other/ByteUtils.java
@@ -1,10 +1,14 @@
package com.ard.utils.other;
import javax.xml.bind.DatatypeConverter;
import java.io.ByteArrayOutputStream;
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: 字节工具类
@@ -14,24 +18,25 @@
 * @Version: 1.0
 **/
public class ByteUtils {
    /**
     * 打印十六进制二进制
     */
    public static String printHexBinary(byte[] bytes) {
        return DatatypeConverter.printHexBinary(bytes);
    }
    /**
     * 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 "";
    }
    /**
@@ -62,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();
@@ -115,6 +119,31 @@
        return buffer.array();
    }
    /**
     * double转byte数组
     */
    public static byte[] doubleToBytes(double d) {
        // 创建一个 ByteBuffer,分配足够的空间来存储一个 float 值
        ByteBuffer buffer = ByteBuffer.allocate(Double.BYTES);
        // 将 float 值写入 ByteBuffer
        buffer.putDouble(d);
        // 获取字节数组
        return buffer.array();
    }
    /**
     * float转byte数组
     */
    public static byte[] floatToBytes(float f) {
        // 创建一个 ByteBuffer,分配足够的空间来存储一个 float 值
        ByteBuffer buffer = ByteBuffer.allocate(Float.BYTES);
        // 将 float 值写入 ByteBuffer
        buffer.putFloat(f);
        // 获取字节数组
        return buffer.array();
    }
    /**
     * byte数组拼接
     */