【发布时间】:2018-07-16 20:52:27
【问题描述】:
我目前正在开发一款 2D MMORPG。 所以,现在我想处理坐标,但我有一个问题。 我需要将负浮点(坐标)转换为字节,通过套接字发送到服务器,然后再转换回坐标(浮点)。 我被困在这部分了。
发送到服务器:
out.writeByte(packettype);
out.writeFloat(x);
out.writeFloat(y);
out.flush();
转换回来:
float x,y;
byte[] xA = new byte[4];
byte[] yA = new byte[4];
for(int i=1;i<5;i++){
xA[i-1] = (byte) b[i];
}
for(int i=5;i<9;i++){
yA[i-5] = (byte) b[i];
}
x = ByteBuffer.wrap(xA).order(ByteOrder.BIG_ENDIAN).getFloat();
y = ByteBuffer.wrap(yA).order(ByteOrder.BIG_ENDIAN).getFloat();
如果我的坐标低于 0,我会得到如下值:
X---------Y
2,3964 3854642970624
2,3964 2857584033792
2,3964 4395458363392
提前致谢!
【问题讨论】:
-
通常您会为此使用
ByteBuffer或DataOutputSream。 -
输出(客户端):
DataOutputStream.writeFloat()输入(服务器端):DataInputStream.readFloat(),因为 Java 1.0 为什么这是个问题? -
@markspace 如您所见,我尝试使用
ByteBuffer,但没有帮助。而我的“out”变量是DataOutputStream。 -
您为什么不使用
DataInputStream来读取您使用DataOutputStream编写的数据?
标签: java sockets floating-point type-conversion byte