我有一个字符串数组,表示二进制数(不带前导零),我想将其转换为相应的10进制数。考虑:
binary 1011 becomes integer 11
binary 1001 becomes integer 9
binary 11 becomes integer 3 etc.
最好的方式是什么?我一直在探索java。lang.number.*没有找到直接的转换方法<代码>整数。parseInt(b)生成一个等于字符串的整数。。。e、 1001变成了1001而不是9。。。而且似乎不包括输出基的参数ToBinarysting
转换方向错误。我怀疑我需要进行多步转换,但似乎找不到方法或子类的正确组合。我也不确定前导零或前导零缺失在多大程度上会成为一个问题。有人能给我指路吗?
int foo = Integer.parseInt("1001", 2);
如果你处理的是正数,那么就可以了,但是如果你需要处理有符号的数字,你可能需要对字符串进行符号扩展,然后转换成整数
public class bit_fun {
public static void main(String[] args) {
int x= (int)Long.parseLong("FFFFFFFF", 16);
System.out.println("x =" +x);
System.out.println(signExtend("1"));
x= (int)Long.parseLong(signExtend("1"), 2);
System.out.println("x =" +x);
System.out.println(signExtend("0"));
x= (int)Long.parseLong(signExtend("0"), 2);
System.out.println("x =" +x);
System.out.println(signExtend("1000"));
x= (int)Long.parseLong(signExtend("1000"), 2);
System.out.println("x =" +x);
System.out.println(signExtend("01000"));
x= (int)Long.parseLong(signExtend("01000"), 2);
System.out.println("x =" +x);
}
private static String signExtend(String str){
//TODO add bounds checking
int n=32-str.length();
char[] sign_ext = new char[n];
Arrays.fill(sign_ext, str.charAt(0));
return new String(sign_ext)+str;
}
}
output:
x =-1
11111111111111111111111111111111
x =-1
00000000000000000000000000000000
x =0
11111111111111111111111111111000
x =-8
00000000000000000000000000001000
x =8
我希望这有帮助!
这可能行得通:
public int binaryToInteger(String binary) {
char[] numbers = binary.toCharArray();
int result = 0;
for(int i=numbers.length - 1; i>=0; i--)
if(numbers[i]=='1')
result += Math.pow(2, (numbers.length-i - 1));
return result;
}
您需要指定基数。有一个重载的整数#parseInt()
允许您。
int foo = Integer.parseInt("1001", 2);
问题内容: 我有一个表示二进制数(不带前导零)的字符串数组,我想将其转换为相应的基数10。考虑: 最好的进行方法是什么?我一直在探索java.lang.number。*,而没有找到直接转换方法。对String产生一个整数EQUAL …例如,1001变为1,001而不是9 …并且似乎不包括输出基数的参数。转换方向错误吗?我怀疑我需要进行多步转换,但似乎找不到正确的方法或子类组合。我也不确定前导零或缺
问题内容: 当将int转换为二进制时,如何将其输出为8个字符,当前仅显示1且缺少7个零 码 示例输出到0000 0001 问题答案: 我不确定这是否是您的意思,但是类似 会产生
我如何将一个写为二进制的字符串转换为二进制(字节数组)? 如果我有一个字符串: 下面是当我将二进制设置为字节数组时发生的情况(字节数组返回48,这是ASCII) 我不擅长解释,所以希望上面的例子足以告诉你我想要什么。
问题内容: 假设我有字符串: 我得到的位置无关紧要,但是为了具体起见,假设我从二进制文件中读取了它。 我知道我的字符串是4(4字节)浮点数的二进制表示形式。我想将那些浮点数作为一个numpy数组。我 可以 做: 但是创建中间元组似乎很愚蠢。有没有一种方法可以在不创建中间元组的情况下执行此操作? 编辑 我还希望能够以可以指定字符串的字节序的方式构造数组。 问题答案: 或者,如果您想要大端字节序: 的
问题内容: 我想将二进制字符串转换为数字Eg 这怎么可能?谢谢 问题答案: 该函数将字符串转换为数字,并使用第二个参数来指定字符串表示形式的基数: 看到它在行动 。
问题内容: 我写了一些代码将十六进制显示字符串转换为十进制整数。但是,当输入类似100a或625b(带有字母的东西)时,我得到了这样的错误: java.lang.NumberFormatException:对于输入字符串:java.lang.Integer.parseInt(未知源)处的java.lang.NumberFormatException.forInputString(未知源)处为“ 1