将反向的十六进制字符串转换为十进制

时间:2018-08-10 08:20:13

标签: java android nfc

我目前正在编写一个程序,该程序读取NFC标签的ID并将其反转。我现在要完成的事情是将反向ID从十六进制转换为Dec

假设该数字的ID为“ 3bde4eac”,则相反的结果为“ ac4edb3b”

我真的不知道如何正确地将HexString转换为Decimal。

这是我当前的代码:

else{
            String tagInfo = tag.toString() + "\n";

            tagInfo = "";
            byte[] tagId = tag.getId();
            for(int i=n; i<tagId.length; i++){

                tagInfo += Integer.toHexString(tagId[i] & 0xFF);

            }

            String s = tagInfo;
            StringBuilder result = new StringBuilder();
            for(int n = 0; n <=s.length()-2; n=n+2) {
                result.append(new StringBuilder(s.substring(n, n + 2)).reverse());

            }
            s = result.reverse().toString();
            Long f = Long.parseLong(s, 16);
            textViewInfo.setText(s);
        }

编辑:使用“重复链接”,我能够解决问题。

我将代码的最后一部分更改为

s = result.reverse().toString();
            Long g = hex2decimal(s);
            textViewInfo.setText(g.toString());

具有功能

public static Long hex2decimal(String s) {
    String digits = "0123456789ABCDEF";
    s = s.toUpperCase();
    long val = 0;
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        long d = digits.indexOf(c);
        val = 16*val + d;
    }
    return val;
}

1 个答案:

答案 0 :(得分:1)

您应尝试将反向字符串解析为十六进制,然后将获得的int值转换为十进制。检出Integer.parseInt(strValue, 16)来解析以base16 /十六进制表示的String,并为此Integer.toString(intValue)进行解析。