Java将整数转换为十六进制整数
Posted
技术标签:
【中文标题】Java将整数转换为十六进制整数【英文标题】:Java Convert integer to hex integer 【发布时间】:2012-03-08 10:58:48 【问题描述】:我正在尝试将一个整数从一个整数转换为另一个整数,如果以十六进制打印,它看起来与原始整数相同。
例如:
将 20 转换为 32(即 0x20)
将 54 转换为 84(即 0x54)
【问题讨论】:
How to get hex value from integer in java的可能重复 我现在才意识到,要真正解决给定的测试用例,就是将 hex 转换为 int,而不是反过来。但是,“Java 将整数转换为十六进制整数”的问题标题导致了许多答案,包括我的答案和最赞成的答案是将 int 转换为十六进制。 【参考方案1】:最简单的方法是使用Integer.toHexString(int)
【讨论】:
问题是从整数转换为整数,而不是整数到字符串。请再次阅读问题。 这没有意义,你无法控制整数的内部表示。如果你想要十六进制的东西,根据定义,你是在询问 人类可读 表示。 @sircodesalot:问题是关于计算具有特定属性 if 打印为十六进制的整数,这是一种纯粹的数学转换。我强烈不同意 Jossef 的观点,即应该根据谷歌结果将答案标记为正确,但根据投票结果,我似乎是少数。 @AdamNybäck rekt【参考方案2】:public static int convert(int n)
return Integer.valueOf(String.valueOf(n), 16);
public static void main(String[] args)
System.out.println(convert(20)); // 32
System.out.println(convert(54)); // 84
即把原来的数字当作十六进制处理,然后再转换成十进制。
【讨论】:
从 4 个字节转换为字符串,然后从字符串转换为 int,然后转换为十六进制?不,谢谢。 这个解决方案有缺陷。尝试运行以下命令:Integer.valueOf(String.valueOf(-2115381772), 16) - 这将返回 NumberFormatException。 这会将一个以 16 为底的数字转换为以 10 为底的表示形式。Correct answer is below【参考方案3】:另一种将int 转换为hex的方法。
String hex = String.format("%X", int);
您可以将大写 X
更改为 x
为小写。
示例:
String.format("%X", 31)
结果1F
。
String.format("%X", 32)
结果20
。
【讨论】:
String hex = String.format("%02X", int);
用于固定长度(两个字符,最后有前导零)。【参考方案4】:
int orig = 20;
int res = Integer.parseInt(""+orig, 16);
【讨论】:
【参考方案5】:你可以尝试这样的事情(就像你在纸上做的那样):
public static int solve(int x)
int y=0;
int i=0;
while (x>0)
y+=(x%10)*Math.pow(16,i);
x/=10;
i++;
return y;
public static void main(String args[])
System.out.println(solve(20));
System.out.println(solve(54));
对于您给出的示例,这将计算:0*16^0+2*16^1=32 和 4*16^0+5*16^1=84
【讨论】:
【参考方案6】:String input = "20";
int output = Integer.parseInt(input, 16); // 32
【讨论】:
【参考方案7】:如果您只想打印 正 整数的十六进制表示,则以下内容已优化。
它应该非常快,因为它只使用位操作、ASCII 字符的 utf-8 值和递归以避免在末尾反转 StringBuilder
。
public static void hexa(int num)
int m = 0;
if( (m = num >>> 4) != 0 )
hexa( m );
System.out.print((char)((m=num & 0x0F)+(m<10 ? 48 : 55)));
【讨论】:
【参考方案8】:只需这样做:
public static int specialNum(num)
return Integer.parseInt( Integer.toString(num) ,16)
它应该将任何特殊的十进制整数转换成对应的十六进制。
【讨论】:
以上是关于Java将整数转换为十六进制整数的主要内容,如果未能解决你的问题,请参考以下文章