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

Java 有没有办法保存或修改代码基信息?,java,parsing,radix,Java,Parsing,Radix,假设我有以下代码: int two = 2; String twoInBinary = Integer.toString(two, 2); twoInBinary字符串现在将保存值10。但在这种转换中,基数信息似乎完全丢失了。因此,如果我通过网络将twoinary作为XML文件的一部分发送,并希望将其反序列化为整数格式,如下所示 int deserializedTwo = Integer.parseInt(twoInBinary); 。。。然后,反序列化的两个将等于10,而不是2(十进制)

假设我有以下代码:

int two = 2;
String twoInBinary = Integer.toString(two, 2);
twoInBinary
字符串现在将保存值
10
。但在这种转换中,基数信息似乎完全丢失了。因此,如果我通过网络将
twoinary
作为XML文件的一部分发送,并希望将其反序列化为整数格式,如下所示

int deserializedTwo = Integer.parseInt(twoInBinary);
。。。然后,
反序列化的两个
将等于
10
,而不是
2
(十进制)


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

简短回答:不,不是在标准Java中。然而,编写一个
可序列化的
类来通过网络传输值和基数信息是很简单的

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>

10
2.
而不仅仅是

<value>10</value>
10
这当然不会保留基数信息


干杯,

简短回答:不,不是标准Java。然而,编写一个
可序列化的
类来通过网络传输值和基数信息是很简单的

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>

10
2.
而不仅仅是

<value>10</value>
10
这当然不会保留基数信息


干杯,

如果要将其作为XML文件的一部分发送,则必须使用正确的数据类型定义。XML模式支持一种精确描述类型的方法


因此,
10
当前可能正在描述一个定义为基数10的
整数。您可以很容易地描述一种新的简单类型,它将数字表示为基数2。

如果您将其作为XML文件的一部分发送,则必须使用正确的数据类型定义。XML模式支持一种精确描述类型的方法


因此,
10
当前可能正在描述一个定义为基数10的
整数。您可以很容易地描述一种新的简单类型,将数字表示为基数2。

XML对此没有标准,但您可以发明一种,例如Java 7使用
0
表示八进制
0x
表示十六进制,binary.XML的
0b
没有这方面的标准,但你可以发明一个,例如Java 7使用
0
表示八进制
0x
表示十六进制,
0b
表示二进制。@Peter OP提到“通过网络”,因此我计算了编组/解编,因此
可序列化
。@Peter OP提到“通过网络”,因此,我计算了编组/解编组,从而
可序列化
。。。