我已经在java中编写了一个.obj解析器来在iPhone上对3D对象进行建模。我想将数据导出为二进制文件,该文件必须尽可能小。我有很多适合未签名short的索引,但它们在java中表示为int。将int转换为unsigned short java
我想在写入文件之前使用ByteBuffer类来完成转换。我想我必须在将它们推入ByteBuffer之前操作字节,但我不知道如何操作。
如果你能帮助我,请提前致谢。
我已经在java中编写了一个.obj解析器来在iPhone上对3D对象进行建模。我想将数据导出为二进制文件,该文件必须尽可能小。我有很多适合未签名short的索引,但它们在java中表示为int。将int转换为unsigned short java
我想在写入文件之前使用ByteBuffer类来完成转换。我想我必须在将它们推入ByteBuffer之前操作字节,但我不知道如何操作。
如果你能帮助我,请提前致谢。
在Java中,未签名的short可以表示为char
。只需将int转换为char并在ByteBuffer上使用putChar()
即可。
myBuffer.putChar((char) my16BitInt);
简单而有效,非常感谢! – Friedrik
+1:这与'myBuffer.putShort((short)my16BitInt')相同;' –
您可以从您的整数提取单字节与
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);
short toUint16(int i)
{
return (short) i;
}
int toUint32(short s)
{
return s & 0xFFFF;
}
'return s&0xFFFF;' – Winter
有没有这样的事情在Java中的无符号什么... –
为什么不只是投入char?这导致了16位 –
@Andrew White是的,我知道,我不会问我没有。 – Friedrik