Android Studio 如何在Java中将十六进制转换为十进制

tez616oj  于 2023-01-17  发布在  Android
关注(0)|答案(2)|浏览(339)

我目前有一个应用程序,我通过蓝牙接收2个值eidogg. 0 e 15。我现在想以十进制值显示这些值。
代码如下所示:

private static final char[] DIGITS_LOWER = {'0', '1', '2', '3', '4', '5',
            '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

    private static final char[] DIGITS_UPPER = {'0', '1', '2', '3', '4', '5',
            '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

    public static String formatHexString(byte[] data) {
        return formatHexString(data, false);
    }

    public static String formatHexString(byte[] data, boolean addSpace) {
        if (data == null || data.length < 1)
            return null;
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < data.length; i++) {
            String hex = Integer.toHexString(data[i] & 0xFF);
            if (hex.length() == 1) {
                hex = '0' + hex;
            }
            sb.append(hex);
            if (addSpace)
                sb.append(" ");
            
        }
        return sb.toString().trim();
    }
    
}

我该如何转换这个字符串,以便将值转换回十进制值呢?

ix0qys7i

ix0qys7i1#

我感到困惑,因为我不知何故认为字节必须显示在十六进制值。它没有越过我的头脑,我可以只展示两个字节的十进制值。目前有我想要的与以下代码:

public class HexUtil {
    public static String formatDecimalString(byte[] data, boolean addSpace) {
        if (data == null || data.length < 1)
            return null;
        int negative = data[0] < 0 ? -1 : 1;
        BigInteger bigInteger = new BigInteger(negative, data);
        String decimal = bigInteger.toString();
        if(addSpace) {
            decimal = decimal.replaceAll("(.{2})", "$1 ");
        }
        return decimal;
    }
}
blpfk2vs

blpfk2vs2#

可以使用java.lang.integer库的方法parseInt。
简单地执行Integer.parseInt(hexString,16);
有关详细信息,请参阅此处的文档。

相关问题