【发布时间】:2019-07-23 19:20:53
【问题描述】:
我正在尝试将十六进制字符串转换为 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);
你能告诉我我错过了什么吗?提前谢谢!
【问题讨论】:
-
如果使用
Long.parseLong(value, 16),则不需要在数字的十六进制表示开头使用0x。 -
@Ivan 是正确的,要解决问题,您只需将正则表达式更改为
"(\\s*)(ECU_ADDRESS )0x(E0\\d*\\w*\\d*)"