我有一个字符串数组,表示二进制数(不带前导零),我想将其转换为相应的10进制数。考虑:
binary 1011 becomes integer 11
binary 1001 becomes integer 9
binary 11 becomes integer 3 etc.
最好的方法是什么?我一直在探索java.lang.number.*而没有找到直接转换方法。 Integer.parseInt(b)
生成一个等于字符串的整数…例如,1001变为1001而不是9…并且似乎不包含输出基的参数。 toBinaryString
转换方向是否错误。我怀疑我需要进行多步转换,但似乎找不到正确的方法或子类组合。我也不确定前导零或缺少前导零会在多大程度上成为一个问题。有人给我指路吗?
10条答案
按热度按时间n53p2ov01#
如果你担心表现,
Integer.parseInt()
以及Math.pow()
太贵了。您可以使用位操作以两倍的速度执行相同的操作(根据我的经验):哪里
输出:
pbwdgjma2#
这可能有用:
qacovj5a3#
我喜欢环!耶!
带累加器的while循环,从左到右(
l
不变):从右到左带有2个循环变量,灵感来自java中的将布尔值转换为int(绝对可怕):
更合理的实施方式:
可读版本:p
s8vozzvw4#
我想我更无聊了!修改了哈桑的答案,使之正确运作。
lh80um4z5#
wqlqzqxt6#
对我来说,当我试图处理负数时,我有数字格式异常。我用下面的数字来表示负数和正数。
4si2a6ki7#
现在你想从二进制字符串到十进制,但在后记,你可能需要相反的方法。在下面。
vqlkdk9b8#
如果处理的是正数,则可以正常工作,但如果需要处理有符号数,则可能需要对字符串进行符号扩展,然后转换为int
我希望这有帮助!
46scxncf9#
您需要指定基数。有一个超负荷的
Integer#parseInt()
这样你就可以。lstz6jyr10#
修复了java的integer.parseint(文本)的版本,以处理负数: