我在 java 中编写了一个 .obj 解析器来对 iPhone 上的 3D 对象进行建模。我想将数据导出为二进制文件,该文件必须尽可能小。我有很多适合 unsigned short 的索引,但它们在 java 中表示为 int。
我想在将数据写入文件之前使用 ByteBuffer 类进行转换。我想我必须在将字节推入 ByteBuffer 之前对其进行操作,但我不知道该怎么做。
如果您能帮助我,请提前感谢您。
在 Java 中,一个 unsigned short 可以表示为char
. 只需将 int 转换为 char 并putChar()
在 ByteBuffer 上使用。
myBuffer.putChar((char) my16BitInt);
short toUint16(int i)
{
return (short) i;
}
int toUint32(short s)
{
return s & 0xFFFF;
}
您可以从整数中提取单个字节
int i;
byte b1 = i & 0xFF;
byte b2 = (i >> 8) & 0xFF;
使用 http://download.oracle.com/javase/6/docs/api/java/io/DataOutputStream.html
dos.writeShort(value & 0xFFFF);