1

次のコードがあるとしましょう。

int two = 2;
String twoInBinary = Integer.toString(two, 2);

文字列はtwoInBinary値を保持します10。しかし、この変換では基数情報が完全に失われているようです。したがって、twoInBinaryXMLファイルの一部としてネットワーク経由で送信し、次のように整数形式に逆シリアル化する場合は...

int deserializedTwo = Integer.parseInt(twoInBinary);

...次に、 (10進数で)ではなくdeserializedTwo等しくなります。102

があることは知っていますが、Integer.parseInt(String s, int radix)多くの異なる文字列に多くの異なる基数を使用する複雑なシステムでは、値と個別の同期ログを保持する必要なしに基数情報を保持することは可能ですか?

4

2 に答える 2

2

簡単な答え:いいえ、標準のJavaではありません。ただし、Serializable値と基数の情報をネットワーク経由で転送できるクラスを作成するのは簡単です。

class ValueWithRadix implements Serializable
{
    int radix;
    String value;
}

int deserializedTwo = Integer.parseInt( valueWithRadix.getValue() , valueWithRadix.getRadix() );

編集:さらに明確にするために、ネットワーク上のXMLは次のようになります。

<ValueWithRadix>
  <value>10</value>
  <radix>2</radix>
</ValueWithRadix>

ただではなく

<value>10</value>

もちろん、これは基数情報を保持しません。

乾杯、

于 2012-10-08T12:40:33.003 に答える
2

XMLファイルの一部として送信する場合は、正しいデータ型定義を使用する必要があります。XMLスキーマは、タイプを正確に記述するために、さまざまな組み込みタイプをサポートしています。

したがって<value>10</value>、現在、基数10として定義されているを記述している可能性がありますinteger。数字を基数2として表す新しい単純な型を非常に簡単に記述できます。

于 2012-10-08T12:46:14.017 に答える