2012-08-15 62 views
1

加入他们,我有4个字符串:将字符串转换为整数,并在Java中

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

可能重复的[如何将字符串转换为int在Java?](http://stackoverflow.com/questions/5585779/how-to-convert-string-to-int-in-java) – Sjoerd 2012-08-15 20:08:28

+0

感谢您的回答。我忘记说我的字符串长度是32.然后integer.valueOf()不起作用。 :( – 2012-08-15 20:10:12

+0

你真的想把二进制转换为整数吗?字符串只包含0和1吗?它们代表有符号还是无符号数字?数字是否适合int?int的最大数量是20亿,所以32个字符的数量不适合int。 – Sjoerd 2012-08-15 20:12:17

回答

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. 
+0

是的,这是很好的答案,但实际上当字符串长度为32时,这不起作用。@ggreiner – 2012-08-15 20:13:55

+0

BigInteger是对象吗?这意味着,我应该定义自己或它是在java中预定义的对象? – 2012-08-15 20:18:59

+0

[BigInteger](http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html)是一个类,请看文档。 – ggreiner 2012-08-15 20:19:49

2

最简单的方法就是使用Integer.parseInt(str1)。返回包含由字符串表示的值的int

valueOf()返回一个Integer对象,而不是一个int原语。

+1

但是autoboxing会照顾到,所以这不是问题。 'int x = Integer.valueOf(“123”);''会因为自动装箱而工作得很好。 – 2012-08-15 20:38:38

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; 

如果你这样,你只是做了错误,没有别的你的情况进行。 一个更好的解决方案是, 可以计算单个字符串的十进制值。而不是加入(+)他们,只是concat(加入)他们形成一个单一的字符串。 我建议这种方法,因为它总是提供一个唯一的值,以后您可能需要知道单个字符串的十进制值。

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上面的方法。

希望这可以帮助你很大。