【问题标题】:Java int to unsigned byteJava int 到无符号字节
【发布时间】:2013-05-12 19:38:10
【问题描述】:

长话短说,我正在从一个文件中读取一些整数值,然后我需要将它们存储在一个字节数组中,以便稍后写入另一个文件。

例如:

int number = 204;
Byte test = new Byte(Integer.toString(number));

这段代码抛出:

java.lang.NumberFormatException: Value out of range. Value:"204" Radix:10

这里的问题是一个字节只能存储-127 - 128,所以显然这个数字太高了。我需要做的是对数字进行签名,即值-52,它将适合字节。但是,我不确定如何做到这一点。

谁能给点建议?

谢谢

【问题讨论】:

标签: java integer byte signed


【解决方案1】:

一个更简单的方法是转换它:

int number = 204;
byte b = (byte)number;
System.out.println(b);

打印-52

【讨论】:

    【解决方案2】:

    你可以施放它:

    Byte test = (byte) number;
    

    【讨论】:

      【解决方案3】:

      使用这个:

        byte b = (byte) ((0xFF) & number);
      

      【讨论】:

      • 我不认为你需要用0xFF & 它。无论有没有它,它的输出似乎都是一样的。是的,我确实尝试使用 > 255 的数字。
      • 对于编译器来说,Java 中不需要这种从 int 到 byte 的窄化转换。但是,它明确记录了您有意仅使用最低有效字节。
      猜你喜欢
      • 2013-03-11
      • 2016-11-06
      • 1970-01-01
      • 2013-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 2014-12-26
      相关资源
      最近更新 更多