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提到“通过网络”,因此,我计算了编组/解编组,从而可序列化
。。。