将int转换为无符号短java

将int转换为无符号短java,java,int,unsigned,short,Java,Int,Unsigned,Short,我用java编写了一个.obj解析器,用于在iPhone上对3D对象进行建模。我想将数据导出为二进制文件,该文件必须尽可能小。我有很多适合无符号short的索引,但它们在java中表示为int 我想在将数据写入文件之前使用ByteBuffer类进行转换。我想在将字节推入ByteBuffer之前,我必须对字节进行操作,但我不知道如何操作 如果您能帮助我,请提前向您表示感谢。在Java中,未签名的短字符可以表示为char。只需将int转换为char并在ByteBuffer上使用putChar() m

我用java编写了一个.obj解析器,用于在iPhone上对3D对象进行建模。我想将数据导出为二进制文件,该文件必须尽可能小。我有很多适合无符号short的索引,但它们在java中表示为int

我想在将数据写入文件之前使用ByteBuffer类进行转换。我想在将字节推入ByteBuffer之前,我必须对字节进行操作,但我不知道如何操作


如果您能帮助我,请提前向您表示感谢。

在Java中,未签名的短字符可以表示为
char
。只需将int转换为char并在ByteBuffer上使用
putChar()

myBuffer.putChar((char) my16BitInt);

您可以使用以下命令从整数中提取单个字节:

int i;
byte b1 = i & 0xFF;
byte b2 = (i >> 8) & 0xFF;
使用


java中没有未签名的东西……为什么不直接转换为char呢?结果是16个bits@Andrew怀特:是的,我知道,如果我不知道,我不会问的。@Mike Kwan,我就是这么做的,很管用。感谢+1:这与
myBuffer.putShort((short)my16bit)的作用相同
返回s&0xFFFF
dos.writeShort(value & 0xFFFF);
short toUint16(int i)
{
    return (short) i;
}

int toUint32(short s)
{
    return s & 0xFFFF;
}