繁体   English   中英

Java:将数字和字符串转换为十六进制会返回不同的结果。 为什么?

[英]Java: converting numbers and string to hex returns different results. Why?

试图将数字转换为十六进制让我卡住了,看看:

数量:32

十六进制预期(ASCII):20

以字符串形式出现的数字的结果:

System.out.println(String.format("%02x", new BigInteger(1, "32".getBytes(StandardCharsets.US_ASCII))));

给我 33 32 结果(我理解这是因为它解析 3 (=33) 和 2 (=32) )

结果转换为数字:

System.out.println(Integer.toHexString(32));

给我20(正确)

我想更好地了解这种情况,有人可以解释一下彼此之间有什么不同吗? (请不要说“因为它调用不同的方法......友好)

此外,第一种方法可以让我设置字符集,而第二种方法则不能。 为什么?

从字符串返回getBytes()方法,分隔该字符串的每个字节,在您的情况下为“3”和“2”。

使用String.format("%02x", .....打印它们,显示其 ASCII 代码的十六进制数。

另一方面, Integer.toHexString(32)toHexString方法获取数据,该方法不分隔每个字节,而是以十六进制格式获取数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM