У меня есть следующий многобайтовая представленный в шестнадцатеричном формате:поменяв порядок многобайтовой
0xdc, 0xd3
Я могу обрабатывать байты в прямом порядке байт() формат, чтобы получить десятичное значение 54236:
List<Integer> packet = new LinkedList<Integer>(Arrays.asList(0xdc, 0xd3));
int idx=0;
int rpm = (int)readBytes(packet, idx, 2);
private long readBytes(List<Integer> packet, int idx, int size){
long val=0;
int element;
for(int i=0;i<size;i++, idx++){
element = packet.get(idx);
val |= element << (8 * i);
}
return val;
}
Описанный выше метод дает значение, как ожидалось. Однако, теперь я хочу, чтобы получить значение в обратном порядке (большой формат обратный порядок байт), но это дает мне некоторые сумасшедшие значение 14471936:
private long bigEndianReadBytes(List<Integer> packet, int idx, int size){
long val=0;
int element;
for(int i=size;i>0;i--, idx++){
element = packet.get(idx);
val |= element << (8 * i);
}
return val;
}
Что может быть не так с этим методом?