порядок следования байт в Java-машине?
От: app_error Украина http://www.bestsell.kiev.ua
Дата: 07.03.07 06:47
Оценка:
Есть у меня задача, в которой из файла я должен читать 4-байта длины записи, а потом, согласно этой длине саму запись. Записаны байты в "серверном" порядке, так как файл генерируется на mainframe. на Pascal (IA32) я получал длину файла следующим образом:

var buf: array [0..3]of byte;
len: integer;
begin
mfread(buf);
len := buf[3] + buf[2] shl 8 + buf[1] shl 16 + buf[0] shl 24;
end;

Пробую также делать на java:

byte[] buf = new byte[4];
int len;

mfread(buf);
len = ((int)buf[3]) + (((int)buf[2]) << 8) + (((int)buf[1]) <<16) + (((int)buf[0]) << 24;

Правильный результат получается в некоторых случаях, в некоторых случаях получается отрицательный результат. Подскажите порядок следования байт в типе int. Или может у меня еще где ошибка? Зависит ли порядок следования байт в java-машине от аппаратной платформы?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.