试图将数字转换为十六进制让我陷入困境,看看:
编号: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(正确(
我想更好地理解这种情况,有人能解释一下彼此之间的区别吗?(请不要说"因为它调用不同的方法……要友好"(
此外,第一种方法允许我设置Charset,而第二种方法则不允许。为什么?
从String返回getBytes()
方法,分离该String的每个字节,在您的情况下,这些字节将是'3'和'2'。
使用String.format("%02x", .....
打印它们显示了它们的ASCII代码的十六进制数。
另一方面,Integer.toHexString(32)
从toHexString
方法中获取数据,该方法不分离每个字节,而是以十六进制格式获取数据。