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