簡體   English   中英

Java:將帶符號的Int_32(十六進制)轉換為Int

[英]Java: Convert signed Int_32 (hex) to Int

我有一個帶符號的int_32值(FFFFFFFC),它表示-4

如果我嘗試通過...轉換

long x = Long.parseLong("FFFFFFFC", 32);
System.out.println("X: " + x);

...我將得到“ X:532021755372”而不是-4。 如何將其轉換為有符號值?

您得到的結果不正確,因為32代表數字基 ,而不是結果中的位數。 您正在將字符串解析為以32為基數的數字(即,在編號系統中使用數字0..9和字母A..V而不是0..9和A..F的數字。

要正確解析數字,請使用Long.parseLong("FFFFFFFC", 16); ,並將結果轉換為int ,這是一個32位數字:

int x = (int)Long.parseLong("FFFFFFFC", 16);
System.out.println("X: " + x); // Prints X: -4

演示。

如果FFFFFFFC表示-4,則為int,不長,像這樣解析

int x = Integer.parseUnsignedInt("FFFFFFFC", 16);

你會得到-4

嘗試這個

int x= new BigInteger("FFFFFFFC", 16).intValue();
System.out.println("X: " + x);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM