2017-01-18 4 views
1

Я пытаюсь исследовать двоичные данные, приведенные буферной следующим образом:Читать двоичные данные из буфера

<Buffer 08 30 66 6d 41 64 69 76 66> 

ТМК, что составляет 8 байт данных.

Что я хочу сделать, это изучить первый байт и посмотреть на самый старший бит (самый левый бит) в этом первом байте.

Как я могу узнать, является ли этот первый бит нулем или одним?

ответ

2

Самое простое решение заключается в следующем:

Number(buf[0] > 127) 

работы, потому что:

  1. JS обрабатывает байты, как беззнаковое, AKA всегда положительна; поэтому значение байта находится в диапазоне [0..255], в отличие от [-128..127] для подписанных байтов.
  2. Количество (истина) == , номер (ложь) == 0
  3. самый старший бит является только тогда, когда байт находится в диапазоне [128..255]

(Bonus) сложнее читать, но сексуальнее версия:

((buf[0] & 0xff) >> 7) 
Смежные вопросы