1

私は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 での整数から文字列への変換は非常に簡単ですが、文字列から整数への変換は少し難しいことがわかりました。

4

4 に答える 4

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.
于 2012-08-15T20:07:39.680 に答える
2

これを行う最も簡単な方法は、 を使用することですInteger.parseInt(str1)int文字列で表される値を含む を返します。

valueOf()プリミティブIntegerではなく、オブジェクトを返します。int

于 2012-08-15T20:10:18.143 に答える
1

数値が非常に大きいため、int に収まりません。BigIntegerクラスを使用します。

于 2012-08-15T20:16:46.183 に答える
0

私はあなたのプロジェクトと実際にあなたの問題が何であるかについて知りません。しかし、あなたの部分的な情報から、あなたが説明したように、ビット表現で複数の文字列のセットがあると推測するようになりました。

str1 = "1000110.....11";
str1 = "1110110.....01"; etc

これらの10進値を加算すると、整数が複数の整数値の合計になる可能性があるため、あいまいな結果が得られます。以下の例を参照してください。ここでは、合計5つの可能性[正の10進値]があり、6を生成します。

1+5 = 6;
2+4 = 6;
3+3 = 6;
4+2 = 6;
5+1 = 6;

そのように進めば、エラーを実行するだけで、他に何も起こりません。より良い解決策の1つは、個々の文字列の10進値を計算することです。それらを追加(+)する代わりに、それらを連結(結合)して単一の文字列を形成します。私はこのアプローチを提案しています。なぜなら、これは常に一意の値を与え、後で個々の文字列の10進値を知る必要があるかもしれないからです。

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よりも上記のアプローチを実装する方が良いです。

これがお役に立てば幸いです。

于 2012-08-18T13:29:01.843 に答える