java – Integer.parseInt(x,2)不考虑符号位
发布时间:2020-12-15 04:29:04 所属栏目:Java 来源:网络整理
导读:参见英文答案 Java two’s complement binary to integer ????????????????????????????????????2个 在执行Integer.parseInt(x,2)时,它不考虑符号位. 举个例子, System.out.println(Integer.toBinaryString(-1)); // This output's "22222222222222222222222
参见英文答案 >
Java two’s complement binary to integer ????????????????????????????????????2个
在执行Integer.parseInt(x,2)时,它不考虑符号位. 举个例子, System.out.println(Integer.toBinaryString(-1)); // This output's "22222222222222222222222222222211" System.out.println(Integer.parseInt(Integer.toBinaryString(-1),2)); 第二行抛出, Exception in thread "main" java.lang.NumberFormatException: For input string: "22222222222222222222222222222211" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at com.Test.main(Test.java:116) 我有一个场景将Integer转换为二进制字符串,然后将其转换回来. 有没有办法让parseInt()方法用符号位解析它? 编辑: this问题中的答案有一个hacky解决方案,可以在更大的数据类型上使用parseXX()方法(例如:需要short时使用Integer.parseInt(),或者需要int时使用Long).如果有人试图解析一个负长的(因为没有比长的更大的类型),这不会工作. 但@ Tagir的答案似乎适用于所有类型.所以请保持这个问题. 解决方法
从Java 8开始,您可以使用
Integer.parseUnsignedInt(s,2); :
System.out.println(Integer.parseUnsignedInt(Integer.toBinaryString(-1),2)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |