左晓为主开发手持机充值管理机
zuoxiao
2024-03-04 a9c1231be4e3c1c5bd5e9fc61489d55363090407
app/src/main/java/com/dayu/recharge/tools/HexUtil.java
@@ -1,6 +1,8 @@
package com.dayu.recharge.tools;
import java.math.BigInteger;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -9,7 +11,7 @@
 * Copyright (C), 2022,
 * Author: zuo
 * Date: 2022/3/9 14:55
 * Description:
 * Description: 进制转换
 */
public class HexUtil {
@@ -40,6 +42,9 @@
        return result;
    }
    public static int getBcdToInt(byte data) {
        return ((data & 0xF0) >> 4) * 10 + ((data & 0x0F));
    }
    /**
     * Hex字符串转byte
@@ -62,7 +67,7 @@
        if (hex.length() < 2) {
            hex = "0" + hex;
        }
        return hex;
        return hex.toUpperCase();
    }
@@ -136,6 +141,38 @@
        return Integer.toHexString(Float.floatToIntBits(value));
    }
    /**
     * 将带符号的32位浮点数装换byte数组
     * 低位在前高位在后
     *
     * @param value
     * @return
     */
    public static byte[] folatToByte(Float value) {
        ByteBuffer buffer = ByteBuffer.allocate(4); // 4个字节
        buffer.order(ByteOrder.LITTLE_ENDIAN);
        buffer.putFloat(value);
        byte[] byteArray = buffer.array();
        return byteArray;
    }
    /**
     * 将byte数组转换为带符号的32位浮点数
     *
     * 低位在前高位在后
     *
     * @param value
     * @return
     */
    public static Float bytesToFloat(byte[] value) {
        ByteBuffer bufferLittleEndian = ByteBuffer.wrap(value);
        bufferLittleEndian.order(ByteOrder.LITTLE_ENDIAN);
        return bufferLittleEndian.getFloat();
    }
    /**
     * 十进制转16进制
     *
@@ -161,6 +198,64 @@
        }
    }
    /**
     * short10进制转16进制 低位在前高位在后
     *
     * @param number
     * @return
     */
    public static String get10To16LowHigh(short number) {
        // 使用 Integer.toHexString 将 short 转换为十六进制字符串
        int intValue = Short.toUnsignedInt(number);
        // 使用 Integer.toHexString 将 int 转换为十六进制字符串
        String hexString = Integer.toHexString(intValue);
        // 补0,确保字符串长度为4
        while (hexString.length() < 4) {
            hexString = "0" + hexString;
        }
        hexString = spaceHex(hexString);
        hexString = HighLowHex(hexString);
        return hexString;
    }
    /**
     * short10进制转16进制 低位在前高位在后
     *
     * @param number
     * @return
     */
    public static String get10To16LowHigh(int number) {
        // 使用 Integer.toHexString 将 int 转换为十六进制字符串
        String hexString = Integer.toHexString(number);
        hexString = spaceHex(hexString);
        hexString = HighLowHex(hexString);
        return hexString;
    }
    /**
     * short16进制转10进制 低位在前高位在后
     *
     * @param hex
     * @return
     */
    public static short getShort10To16LowHigh(String hex) {
        try {
            String str = "";
            str = spaceHex(hex);
            str = HighLowHex(str);
            return (short) Integer.parseInt(str, 16);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
        return 0;
    }
    /**
     * 十进制转16进制低位在前高位在后
     *
@@ -183,6 +278,25 @@
    }
    /**
     * 16进制转10进制高低位转换
     *
     * @param hex
     * @return
     */
    public static int get16to10LowHigh(String hex) {
        try {
            String str = "";
            str = spaceHex(hex);
            str = HighLowHex(str);
            return Integer.parseInt(str, 16);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
        return 0;
    }
    /**
     * 返回特定长度的16进制字符串
     *
     * @param data