将int转换为无符号短整型Java

7
我已经用Java写了一个.obj解析器来模拟iPhone上的3D物体。我想将数据导出为二进制文件,文件大小必须尽可能小。我有很多索引可以适合无符号短整型,但在Java中它们表示为整型。
我想使用ByteBuffer类在将数据写入文件之前进行转换。我想我需要在将它们推入ByteBuffer之前操作字节,但我不知道如何操作。
如果您能帮助我,提前感谢您。

Java中不存在任何无符号的数据类型... - Andrew White
2
为什么不直接转换成 char?这会导致 16 位。 - Mike Kwan
@Andrew White 是的,我知道,如果我不知道我就不会问了。 - Friedrik
4个回答

11

在Java中,无符号短整型可以表示为char。只需将int转换为char并在ByteBuffer上使用putChar()即可。

myBuffer.putChar((char) my16BitInt);

+1:这与myBuffer.putShort((short) my16BitInt);的作用相同。 - Peter Lawrey

4
short toUint16(int i)
{
    return (short) i;
}

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

return s & 0xFFFF; - Winter

2

您可以使用以下方法从整数中提取单个字节

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

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接