【发布时间】:2012-09-10 00:01:26
【问题描述】:
我正在尝试制作一个可靠的 UDP 系统,我需要将 byte[] 转换为 int 并返回 (JCreator 5.0 LE)
DatagramPacket 需要它的数据是 byte[] 形式的,所以我必须将 int 信息转换成 byte[] 才能发送:
byte[] data = new byte[48];
System.arraycopy(task.getProtocol().byteValue(), 0, data, 0, task.getProtocol().byteValue().length);
System.arraycopy(task.getMessage().byteValue(), 0, data, 4, task.getMessage().byteValue().length);
System.arraycopy(task.getSequence().byteValue(), 0, data, 8, task.getSequence().byteValue().length);
System.arraycopy(task.getAcknowledge().byteValue(), 0, data, 12, task.getAcknowledge().byteValue().length);
for (int i = task.getAcknowledge(); i >= 0 && i > task.getAcknowledge() - 33; i--) {
for (Packet j: tasks) {
if (j.getSequence() == i) {
data[i] = 1;
break;
}
}
}
out = new DatagramPacket(data, data.length, ds.getInetAddress(), portNum);
ds.send(out);
协议是协议ID
Message 是正在发送的“信息”
Sequence 是数据包的序列号;发送的第一个数据包的序列为 0,下一个为 1,以此类推
Acknowledge 是对发回的数据包的确认
下一部分是其他 32 个确认。为了节省内存,它们被压缩成 1 个字节,而不是 4 个字节(int)
现在,当我收到数据包时,我需要打开它。首先我需要检查前 4 个字节(协议),看看我是否会忽略数据包,但我不知道如何将字节数组转换为 int。
【问题讨论】:
-
或者这个相关的example。
标签: java int bytearray type-conversion