"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/