Есть у меня задача, в которой из файла я должен читать 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-машине от аппаратной платформы?
Здравствуйте, app_error, Вы писали:
_>...
_>Правильный результат получается в некоторых случаях, в некоторых случаях получается отрицательный результат. Подскажите порядок следования байт в типе int. Или может у меня еще где ошибка? Зависит ли порядок следования байт в java-машине от аппаратной платформы?
Байт-код имеет один и тот же формат на всех платформах.
Ты приведи лучше пример, где у тебя не работает — что-то вида:
byte[] b = {1, 2, 3, 4};
int result = 0;
for (int i = 0, j = 0; i < b.length; ++i, j += 8) {
result |= (b[i] << j);
}
System.out.println("result = " + result);
Здравствуйте, app_error, Вы писали:
_>Правильный результат получается в некоторых случаях, в некоторых случаях получается отрицательный результат. Подскажите порядок следования байт в типе int. Или может у меня еще где ошибка? Зависит ли порядок следования байт в java-машине от аппаратной платформы?
http://www.javaworld.com/javaworld/jw-09-1996/jw-09-bytecodes.html?page=2
Здравствуйте, GarryIV, Вы писали:
GIV>Здравствуйте, app_error, Вы писали:
_>>Правильный результат получается в некоторых случаях, в некоторых случаях получается отрицательный результат. Подскажите порядок следования байт в типе int. Или может у меня еще где ошибка? Зависит ли порядок следования байт в java-машине от аппаратной платформы?
GIV>http://www.javaworld.com/javaworld/jw-09-1996/jw-09-bytecodes.html?page=2
Спасибо!