在Java中从byte转换为int

我生成了一个安全的随机数,并将其值放入一个字节中。这是我的代码。

SecureRandom ranGen = new SecureRandom();

byte[] rno = new byte[4];

ranGen.nextBytes(rno);

int i = rno[0].intValue();

但是我遇到一个错误:

 byte cannot be dereferenced

回答:

您的数组是byte基元,但是您正在尝试对其调用方法。

您无需做任何显式操作即可将a转换byteint,只需:

int i=rno[0];

…因为这不是垂头丧气。

请注意,byte-to- int转换的默认行为是保留值的符号(请记住,byte在Java中是带符号的类型)。因此,例如:

byte b1 = -100;

int i1 = b1;

System.out.println(i1); // -100

如果您想到的byte是无符号(156)而不是有符号(-100),那么从Java

8开始,有Byte.toUnsignedInt

byte b2 = -100; // Or `= (byte)156;`

int = Byte.toUnsignedInt(b2);

System.out.println(i2); // 156

在Java 8之前,要获得中的等效值,int您需要屏蔽符号位:

byte b2 = -100; // Or `= (byte)156;`

int i2 = (b2 & 0xFF);

System.out.println(i2); // 156


出于完整性#1的考虑:如果出于某种原因 确实 想要使用各种方法Byte

),则可以使用装箱转换:

Byte b = rno[0]; // Boxing conversion converts `byte` to `Byte`

int i = b.intValue();

Byte构造函数:

Byte b = new Byte(rno[0]);

int i = b.intValue();

但是同样,您在这里不需要。


出于完整性2的考虑:如果 低调的(例如,如果您尝试将an转换intbyte),则只需要强制转换:

int i;

byte b;

i = 5;

b = (byte)i;

这可以确保编译器知道它是一个低估的项目,因此不会出现“可能的精度损失”错误。

以上是 在Java中从byte转换为int 的全部内容, 来源链接: utcz.com/qa/435176.html

回到顶部