我正在编写一个文件来存储有关地图上位置的信息,例如对象会产生的位置。 我在文件中写了一个字节,在字节内会有x和y坐标,我将如何从文件中解析它们
int typeData = stream.readByte();
int x = typeData >> 2;
int y = typeData & 3;
这是我想要实现的一个例子。 我不确定在写作过程中我需要做些什么,例如
outStream.writeByte((x << 2) + (y | 3));
这是一个例子,这段代码尚未经过测试,可能是错误的。
答案 0 :(得分:1)
请注意字节数据类型是8位带符号的二进制补码整数。因此,值包括-128到+127。
因此,在使用int变量(x和y)计算按位运算时,你是对的,就像那样:(x << 2) + (y | 3)
。然后你可以转换为一个字节或让Java自动转换结果,只在调用writeByte()的最后一步。
你当然需要更多8位来存储你的坐标。要访问存储在文件中的二进制数据,请记住在使用标准Java java.nio.ByteBuffer API时,字节缓冲区的初始顺序始终为BIG_ENDIAN。