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