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

标签 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),但是在对许多不同字符串使用许多不同基数的复杂系统中,是否可以保留基数信息而无需将您的值(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/

相关文章:

Java 集合泛型 <?扩展 Employee> 抛出异常

c++ - 从 .dae 加载顶点会使我的程序变慢,为什么?

python - Django 以 10 为基数的 int() 的文字无效 get_prep_value

c# - 在子类调用中返回基类的方法返回?

java - Bazel:FlywayDB java.lang.UnsupportedClassVersionError

Java Parsefloat 异常,字符串为数字后跟字符

java - java.util.concurrent.locks.Lock 的 AutoCloseable 包装器有任何风险吗?

Java:如何解析 HTML 字符串供 XML 工具使用?

c - 可变长度的字符串到int数组?

c - 求某个整数的阶乘在一定基数下的位数