【发布时间】:2012-12-13 06:31:52
【问题描述】:
buffer 是一个字节缓冲区。我正在丢失 percision 错误。
byte myPort = buffer.get(0); // Might need to change this depending on byte order
switch(myPort){
case 0xF1: // Chat service
break;
case 0xF2: // Voice service
break;
case 0xF3: // Video service
break;
case 0xF4: // File transfer service
break;
case 0xF5: // Remote login
break;
}
显然,0xFF 在 java 中不是一个字节,它真的让我很困惑。我不知道我是否会丢失它,但 0xF 不是一个半字节,而 0xFF 不是一个字节吗?显然我的 ide netbeans 允许字节值一直到 127。这似乎是有符号值的问题,但我不知道为什么。
感谢您的帮助。
【问题讨论】:
-
你在哪里得到这个错误?另外,我在代码中看不到任何
0xFF的使用。该代码是否完整? -
我在案例 0xF1 处收到错误,依此类推。这些案例给了我错误。这不是整个代码,而是代码中唯一相关的部分。
-
那是因为你的值
0xF1不在字节范围内 -[-128, 127]。 Java中的字节是有符号的。0xF1等于241。 -
哈哈,谁知道呢。无符号字节在网络中对我来说更有意义,所以我不明白他们为什么不在 Java 中提供它。由于我是一名 C/C++ 程序员,因此转换为整数的想法让我感到畏缩。
标签: java byte bytebuffer