有没有办法保存或修改代码内基数信息?

时间:2012-10-08 12:38:00

标签: java parsing radix

假设我有以下代码:

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

twoInBinary字符串现在将保留值10。但似乎基数信息在这种转变中完全丢失了。所以,如果我通过网络发送twoInBinary作为XML文件的一部分,并希望将其反序列化为整数格式,就像这样......

int deserializedTwo = Integer.parseInt(twoInBinary);

...然后deserializedTwo将等于10而不是2(十进制)。

我知道有Integer.parseInt(String s, int radix),但是在一个复杂的系统中,对于许多不同的字符串使用了许多不同的基数,是否可以保留基数信息而无需为您的值保留单独的同步日志? / p>

2 个答案:

答案 0 :(得分: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>

当然不保留基数信息。

干杯,

答案 1 :(得分:2)

如果您将其作为XML文件的一部分发送,则必须使用正确的数据类型定义。 XML模式支持lot of different built-intypes准确描述您的类型。

所以<value>10</value>目前可能正在描述integer,它被定义为基数10.您可以很容易地描述一个新的简单类型,它将数字表示为基数2.