在java中将int转换为byte

时间:2014-06-28 04:12:02

标签: java

我在java中有一个int变量,其值小于256.所以我可以将它存储在单字节变量中。

我执行了以下代码。

   int i =247;
   byte b = (byte) i ;

但是当我打印它时,

   System.out.println(" i = "+(int)b);

输出        i = -9

是否可以将小于256的int值转换为单字节变量。 PLS。帮助..

1 个答案:

答案 0 :(得分:4)

这不会起作用。 MAX_VALUE的{​​{1}}为127,因为字节是用Java签名的。 (因此,byte是-128。这是典型的Two's Compliment模式。)

话虽如此,你还有几个选择:

  1. 将其保留为int,只需使用int进行计算。这对你来说甚至可能更快。
  2. 即使数字不正确,也请将其保留为字节。 Java中的数字可能不正确,但如果您关心的是正确的位,它们将是正确的。因此,您可以通过Web服务将该位置(在Java中为-9)发送到另一个将其作为无符号字节读取的应用程序,并将其正确读取为MIN_VALUE