Java:将带符号的Int_32(十六进制)转换为Int

时间:2015-07-21 13:10:48

标签: java string hex type-conversion

我有一个签名的int_32值(FFFFFFFC)代表-4

如果我尝试将其转换为......

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

......我得到" X:532021755372"而不是-4。 我怎么能把它转换为有符号值?

3 个答案:

答案 0 :(得分:5)

您得到的结果不正确,因为32表示numeric 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.

答案 1 :(得分:1)

如果FFFFFFFC表示-4,则为int,不长,将其解析为

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

你会得到-4

答案 2 :(得分:0)

试试这个

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