Я написал код C, где у меня есть 14-разрядное число, которое я хочу преобразовать в 2-битные байты, где два msb должны быть равны нулю. Другими словами, 16383 (В двоичном файле 111111111111111) должен выдаваться как MSB = 00111111 и LSB = 11111111. Код, который я использую, показан ниже. Это верно?Преобразование 14 бит в 8 бит и обратно
dataMSB = (number>>8) & 0x00FF;
dataLSB = number & 0x00FF;
Тогда у меня есть еще 14-разрядное число, которое вводится в виде двух 8-битовых байтов, где два LSB-х должны быть выброшены. Здесь я вполне уверен, что делаю это неправильно, но я не уверен. Есть идеи?
number = dataMSB << 8;
number += dataLSB;
Почему вы думаете, что в обратном преобразовании вам нужно бросить 2 LSB? Как я вижу, на самом деле 2 MSB нечетны в преобразовании. – Alex
Что именно вы подразумеваете под словом «два lsb должны быть отброшены»? Можете ли вы привести пример? – interjay
Ваш код работает отлично. кстати, каков ваш вопрос? – Dipto