‘liusuyi’
2023-11-01 616e0764ed9e61ab8a2e8b523eecbba6b98c5c13
src/main/java/com/ard/utils/other/ByteUtils.java
@@ -1,8 +1,10 @@
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.util.zip.CRC32;
/**
@@ -13,6 +15,14 @@
 * @Version: 1.0
 **/
public class ByteUtils {
    /**
     * 打印十六进制二进制
     */
    public static String printHexBinary(byte[] bytes) {
        return DatatypeConverter.printHexBinary(bytes);
    }
    /**
     * byte数组转中文字符串
     */
@@ -62,11 +72,9 @@
     */
    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;
    }
@@ -74,15 +82,12 @@
     * byte数组转Double
     */
    public static double bytesToDouble(byte[] byteArray) {
        long longBits = 0;
        // 根据字节数组的长度和字节顺序,将字节数组转换为长整型
        for (int i = 0; i < byteArray.length; i++) {
            longBits |= (long) (byteArray[i] & 0xFF) << (8 * (byteArray.length - 1 - i));
        }
        // 使用Double.longBitsToDouble方法将长整型转换为Double类型
        return Double.longBitsToDouble(longBits);
        // 创建一个ByteBuffer并设置字节顺序为大端
        ByteBuffer buffer = ByteBuffer.wrap(byteArray);
        buffer.order(ByteOrder.LITTLE_ENDIAN);
        // 从ByteBuffer中获取double值
        double doubleValue = buffer.getDouble();
        return doubleValue;
    }
    /**
@@ -120,6 +125,28 @@
    }
    /**
     * 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;
    }
    /**
     * 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数组拼接
     */
    public static byte[] appendArrays(byte[]... arrays) {