我生成了一个安全随机数,并将其值放入一个字节中。这是我的代码。
SecureRandom ranGen = new SecureRandom();
byte[] rno = new byte[4];
ranGen.nextBytes(rno);
int i = rno[0].intValue();
但我收到一个错误:
byte cannot be dereferenced
原文由 Ashwin 发布,翻译遵循 CC BY-SA 4.0 许可协议
我生成了一个安全随机数,并将其值放入一个字节中。这是我的代码。
SecureRandom ranGen = new SecureRandom();
byte[] rno = new byte[4];
ranGen.nextBytes(rno);
int i = rno[0].intValue();
但我收到一个错误:
byte cannot be dereferenced
原文由 Ashwin 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
您的数组是
byte
原语,但您正试图对它们调用方法。您不需要做任何明确的事情来将
byte
转换为int
,只需:…因为它不是沮丧。
请注意,
byte
-to-int
转换的默认行为是保留值的符号(记住byte
类型在 Java 中是有符号的)。例如:如果您认为
byte
是无符号的 (156) 而不是有符号的 (-100),那么从 Java 8 开始就有Byte.toUnsignedInt
:在 Java 8 之前,要在
int
中获得等效值,您需要屏蔽掉符号位:只是为了完整性 #1:如果出于某种原因( 你不需要在这里),你 确实 想使用
Byte
的各种方法,你可以使用 装箱转换:或者
Byte
构造函数:但同样,您在这里不需要它。
只是为了完整性#2:如果它 是 一个沮丧的(例如,如果你试图将
int
转换为byte
),你只需要一个演员:这向编译器保证你知道它是一个向下转换,所以你不会得到“可能丢失精度”错误。