假设我的字节值为 0x12(十进制 18)。我需要将其转换为十进制 12。我是这样做的:
byte hex = 0x12;
byte dec = Byte.parseByte(String.format("%2x", hex));
System.out.println(dec); // 12
有没有更好的方法(例如不使用字符串和解析)?
假设我的字节值为 0x12(十进制 18)。我需要将其转换为十进制 12。我是这样做的:
byte hex = 0x12;
byte dec = Byte.parseByte(String.format("%2x", hex));
System.out.println(dec); // 12
有没有更好的方法(例如不使用字符串和解析)?
如果要解释二进制编码的十进制并转换为二进制,则可以转换为十六进制字符串并解释为十进制字符串。您的方法是一种完全有效的方法(不过要小心,它byte
是用 Java 签名的。
在此处阅读二进制编码的十进制:http ://en.wikipedia.org/wiki/Binary-coded_decimal
如果要避免字符串转换,可以将每个半字节(四个字节)分开并乘以正确的值:
byte hex = 0x12;
if( hex&15 > 9 || hex>>>4 > 9)
throw new NumberFormatException(); //check for valid input
byte dec = (byte)((hex & 15) + 10*(hex>>>4 & 15));
如果您的输入比一个字节宽,则此方法很容易失控,因为您需要分别处理每个半字节。
十六进制到十进制 - Integer.parseInt(str,16)
十进制到十六进制 - Integer.toHexString(195012)