Конвертировать int в unsigned short java - PullRequest
6 голосов
/ 06 июля 2011

Я написал парсер .obj в java для моделирования трехмерных объектов на iPhone.Я хотел бы экспортировать данные в виде двоичного файла, который должен быть как можно меньше.У меня есть множество индексов, которые бы соответствовали неподписанному короткому номеру, но они представлены как int в Java.

Я хотел бы использовать класс ByteBuffer для преобразования непосредственно перед записью данных в файл.Полагаю, мне придется манипулировать байтами, прежде чем помещать их в байт-буфер, но я понятия не имею, как это сделать.

Заранее спасибо, если вы можете мне помочь.

Ответы [ 4 ]

11 голосов
/ 06 июля 2011

В Java шорт без знака может быть представлен как char.Просто приведите int к типу char и используйте putChar() в ByteBuffer.

myBuffer.putChar((char) my16BitInt);
4 голосов
/ 06 июля 2011
short toUint16(int i)
{
    return (short) i;
}

int toUint32(short s)
{
    return s & 0xFFFF;
}
2 голосов
/ 06 июля 2011

Вы можете извлечь отдельные байты из ваших целых чисел с помощью

int i;
byte b1 = i & 0xFF;
byte b2 = (i >> 8) & 0xFF;
0 голосов
/ 06 июля 2011

Использование http://download.oracle.com/javase/6/docs/api/java/io/DataOutputStream.html

dos.writeShort(value & 0xFFFF);
...