我已經在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