我有4个字符串:
str1 = 10110011;(length of all string is:32)
str2 = 00110000;
str3 = 01011000;
str4 = 11110000;
在我的项目中,我必须添加这些字符串,结果应为:
result[1] = str1[1]+str2[1]+str3[1]+str4[1];
result
应该作为整数的加法获得。
对于上面的示例,result = 22341011
我知道Java中的整数到字符串转换非常简单,但我发现字符串到整数的转换更加困难。
答案 0 :(得分:7)
解析整数-2^31 < n < 2^31-1
使用:
Integer value = Integer.valueOf("10110011");
对于较大的数字,请使用BigInteger类:
BigInteger value1 = new BigInteger("101100111011001110110011101100111011001110110011");
BigInteger value2 = // etc
BigInteger result = value1.add(value2).add(value3); //etc.
答案 1 :(得分:2)
最简单的方法是使用Integer.parseInt(str1)
。返回包含字符串表示的值的int
。
valueOf()
会返回Integer
个对象,而不是int
原语。
答案 2 :(得分:1)
因为你的数字太大,所以它们不适合int。使用BigInteger类。
答案 3 :(得分:0)
我不了解您的项目以及您的问题究竟是什么。但是我从你的部分信息中猜到,你所解释的,你在位表示中有多组字符串。
str1 = "1000110.....11";
str1 = "1110110.....01"; etc
添加这些十进制值,给出一个不明确的结果,因为整数可以是多个整数值的总和。只需看下面的示例,其中总共有5种可能性[具有正十进制值]以产生6。
1+5 = 6;
2+4 = 6;
3+3 = 6;
4+2 = 6;
5+1 = 6;
如果你继续这样做,你只会犯一个错误,在你的情况下没有别的。 一个更好的解决方案是, 计算单个字符串的十进制值。而不是添加( + )它们,只需将它们连接起来( join )以形成单个字符串。 我建议这种方法,因为,这总是给出一个唯一的值,以后您可能需要知道单个字符串十进制值。
String strVal1 = String.format(computeDecimal(str1));
String strVal2 = String.format(computeDecimal(str2));
String strVal3 = String.format(computeDecimal(str3));
.
.
.
String strValn = String.format(computeDecimal(strn));
String myVal = String.concate(strVal1,strVal1,strVal1,....strValn);
现在你可以按照自己的意愿处理你的字符串了。
//This will give you a non conflicting result.
比 BigIntegers 更好地实施上述方法。
希望这对你有很大帮助。