【发布时间】:2011-02-21 13:42:01
【问题描述】:
我试图在一个两字节数组中表示端口号 9876(或十六进制的 0x2694):
class foo {
public static void main (String args[]) {
byte[] sendData = new byte[1];
sendData[0] = 0x26;
sendData[1] = 0x94;
}
}
但是我收到了一个关于可能会丢失精度的警告:
foo.java:5: possible loss of precision
found : int
required: byte
sendData[1] = 0x94;
^
1 error
如何在两字节数组中表示数字 9876 而不会丢失精度?
注意:我选择了@Björn 的代码作为正确答案,但@glowcoder 的代码也很好用。这只是解决同一问题的不同方法。谢谢大家!
【问题讨论】:
-
请注意,通过网络发送的扁平化数据结构通常使用 Java 中的 DataOutputStream(或其子类 ObjectOutputStream)来完成。无需每次都重新发明bitfiddling :-)
-
@meriton: 更好的是,使用
java.nio.ByteBuffer可以做到这一切,不必处理 IOException,也可以控制字节序。