Разбить побитово 3 байта и получить значения

Рейтинг: 1Ответов: 1Опубликовано: 06.03.2015

Задача: Целое без знака, 3 байта

  1. 9...0 - Скорость, в дм/с
  2. 18...10 - Направление, в градусах
  3. 22...19 - Количество спутников (при захвате более 15 спутников передается 15)
  4. 23 - Не используется. Равен 0.

    short speedByte = buf.getShort();//2 int speed = (speedByte & 0x3FF);

    byte b = buf.get();//1
    float angle = (speedByte >> 10) + ((b & 0x03) << 7);
    
    int count_satellites = b  >> 2;
    

Считает неправильно, где я ошибаюсь? Помогите.

Ответы

▲ 1
int source = 43214234123412;
int speed = source & 0x000003FF
int direction = (source >> 10) & 0x000003FF;
int amount = (source >> 19) & 0x0000000F;