| | |
| | | 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; |
| | |
| | | * Copyright (C), 2022, |
| | | * Author: zuo |
| | | * Date: 2022/3/9 14:55 |
| | | * Description: |
| | | * Description: 进制转换 |
| | | */ |
| | | public class HexUtil { |
| | | |
| | |
| | | return result; |
| | | } |
| | | |
| | | public static int getBcdToInt(byte data) { |
| | | return ((data & 0xF0) >> 4) * 10 + ((data & 0x0F)); |
| | | } |
| | | |
| | | /** |
| | | * Hex字符串转byte |
| | |
| | | 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进制 |
| | | * |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 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进制低位在前高位在后 |
| | | * |
| | |
| | | } |
| | | |
| | | /** |
| | | * 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 |