将字符串转换为整数十六进制值"奇怪"行为

use*_*156 4 java

我注意到java不允许我存储2000000000这样的大数字,即显然是一个整数类型的20亿,但是如果我存储相应的十六进制值即int largeHex = 0x77359400; 这可以,

所以我的程序需要增加到2 ^ 32,刚刚超过42亿,我测试了十六进制密钥0xffffffff,它允许我以这种形式存储为int类型,

我的问题是我必须从程序中提取一个十六进制字符串.

sT = "ffffffff";

int hexSt = Integer.valueOf(sT, 16).intValue();
Run Code Online (Sandbox Code Playgroud)

这仅适用于较小的整数值

我收到一个错误

Exception in thread "main" java.lang.NumberFormatException: For input string: "ffffffff"
Run Code Online (Sandbox Code Playgroud)

我需要做的就是在整数变量中使用此值,例如

int largeHex = 0xffffffff
Run Code Online (Sandbox Code Playgroud)

哪个工作正常?

我正在使用整数,因为我的程序需要生成许多值.

Rop*_*Rop 6

String hex = "FFFFFFFF"; // or whatever... maximum 8 hex-digits
int i = (int) Long.parseLong(hex, 16);
Run Code Online (Sandbox Code Playgroud)

给你结果作为签名的int ...