[英]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.