| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | * @Version: 1.0 |
| | | **/ |
| | | public class ByteUtils { |
| | | |
| | | /** |
| | | * 打印十六进制二进制 |
| | | */ |
| | | public static String printHexBinary(byte[] bytes) { |
| | | return DatatypeConverter.printHexBinary(bytes); |
| | | } |
| | | |
| | | /** |
| | | * 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; |
| | | } |
| | | |
| | |
| | | * 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; |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | /** |
| | | * 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) { |