簡體   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