在Java中将十六进制字符串转换为int

问题描述 投票:0回答:2

我试图将一个十六进制字符串转换为一个int,但无论我尝试什么,我一直得到java.lang.NumberFormatException:对于输入字符串:“0xE0030000”。我在我的代码中使用以下模式:

    String ecuPattern ="(\\s*)(ECU_ADDRESS )(0xE0\\d*\\w*\\d*)";

    if(mt.find()){
        String stringNumber = mt.group(3);
        long number = Long.parseLong(stringNumber, 16);

你能告诉我我错过了什么吗?先感谢您!

java regex hex
2个回答
2
投票

您的代码似乎不完整,但根据您的异常消息,Long.parseLong的输入应为“E0030000”而不是“0xE0030000”。

public static void main(String[] args){
    String hex="E0030000";  
    Long decimal=Long.parseLong(hex,16);  
    System.out.println(decimal);
}

输出:3758292992


2
投票

如果您愿意,也可以使用decode()并保留“0x”。

String hex="0xE0030000";  
long decimal=Long.decode(hex);

来自Javadoc:

将字符串解码为长整型。接受以下语法给出的十进制,十六进制和八进制数:

 DecodableString:
    Signopt DecimalNumeral 
    Signopt 0x HexDigits 
    Signopt 0X HexDigits 
    Signopt # HexDigits 
    Signopt 0 OctalDigits
© www.soinside.com 2019 - 2024. All rights reserved.