Java中十进制与十六进制的转换
假设我有一个字节值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
有没有更好的方法来实现这一点(例如,不使用字符串和解析)
# 1 楼答案
十六进制到十进制-整数。parseInt(str,16)
十进制到十六进制-整数。Tohextstring(195012)
# 2 楼答案
如果您想要设置一个二进制编码的十进制并转换为二进制,您可以转换为十六进制字符串并解释为十进制字符串。您的方法是一种非常有效的方法(不过要小心,
byte
是用Java签名的在这里阅读二进制编码的小数:http://en.wikipedia.org/wiki/Binary-coded_decimal
如果要避免字符串转换,可以将每个半字节(四个字节)分开,然后乘以正确的值:
如果你的输入宽度超过一个字节,这个方法很容易失控,因为你需要分别处理每个字节
# 3 楼答案
试试这个:
注意,它假定原始输入是有效的BCD编码