"byte FOO = 0xFE;"在java中不起作用。
"Cannot convert from into to byte" 但它适用于 C++。
如何解决这个问题?

最佳答案

0xFE 等价于 254 中的 int ,并且不在字节范围内,因此如果您尝试将其存储在字节中,则不会进行隐式类型转换。
您的 RHS 值必须在 [-128 to 127] 范围内才能以字节为单位。

或者,您可以通过 explicit typecasting 明确告诉编译器存储它:

byte FOO = (byte)0xFE;

但是,如果您存储的值适合 byte 的范围,则不需要显式类型转换。
byte FOO = 0x20;  // OK, can accommodate in byte.

有关类型转换的更多详细信息,请参阅 JLS - Section # 5.1

还有 JLS - Section # 5.2 专门讨论了 Assignment Conversion
引用 JLS 的声明:-

关于java - 为什么在 Java 中将十六进制数转换为字节不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13098010/

10-11 22:40
查看更多