Java: 将有符号 Int_32 (hex) 转换为 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。 我如何将其转换为有符号值?

试试这个

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

您得到的结果不正确,因为 32 表示 numeric base,而不是结果中的位数。您正在将字符串解析为 base-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

Demo.

如果FFFFFFFC表示-4是int,不是long,这样解析

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

你会得到-4