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

时间:2019-03-01 18:04:33

标签: java regex hex

我正在尝试将十六进制字符串转换为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);

您能告诉我我想念的东西吗?预先谢谢你!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

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

来自Javadoc:

  

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

 DecodableString:
    Signopt DecimalNumeral 
    Signopt 0x HexDigits 
    Signopt 0X HexDigits 
    Signopt # HexDigits 
    Signopt 0 OctalDigits