假设我有以下代码:
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)
,但是在对许多不同字符串使用许多不同基数的复杂系统中,是否可以保留基数信息而无需将您的值(value)观保存在单独的同步日志中?
最佳答案
简短回答:不,不是在标准 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>
这当然不会保留基数信息。
干杯,
关于java - 有没有办法保留或修改代码内基数信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12781911/