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
如果FFFFFFFC表示-4是int,不是long,这样解析
int x = Integer.parseUnsignedInt("FFFFFFFC", 16);
你会得到-4
我有一个带符号的 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
如果FFFFFFFC表示-4是int,不是long,这样解析
int x = Integer.parseUnsignedInt("FFFFFFFC", 16);
你会得到-4