Байты и биты
Мой вопрос в том, как мне разложить мое пришедшее число на эти самый 4 байта и посмотреть какие биты у него установлены и затем согласно существующей битовой маски сравнить и вывести нужные сообщения?
Цитата:
Originally posted by lena_ki
От внешнего устройства приходит число типа Int32. Существует битовая 4-х байтная маска. Каждый бит этой 4-х байтовой маски что-то обозначает. Например, 7-й бит первого байта указывает на то, что произошла остановка определенного датчика.
Мой вопрос в том, как мне разложить мое пришедшее число на эти самый 4 байта и посмотреть какие биты у него установлены и затем согласно существующей битовой маски сравнить и вывести нужные сообщения?
От внешнего устройства приходит число типа Int32. Существует битовая 4-х байтная маска. Каждый бит этой 4-х байтовой маски что-то обозначает. Например, 7-й бит первого байта указывает на то, что произошла остановка определенного датчика.
Мой вопрос в том, как мне разложить мое пришедшее число на эти самый 4 байта и посмотреть какие биты у него установлены и затем согласно существующей битовой маски сравнить и вывести нужные сообщения?
а зачем раскладывать побайтно? берете полученное число, логически умножаете (оператор & ) на число, содержащее 1 в проверяемом разряде и нули в остальных, если получаете число отличное от нуля, значит в проверяемом разряде 1, иначе - 0. ну а как интерпретировать результат - ваше дело. у вас маска ;)
Буду разбираться с этими битами и байтами! :)
Сейчас остановилась на таком варианте:
int BitContainer = 1234; //тестовое число
String BitSetStr ="";
for (int Bit=0; Bit<32; Bit++)
{
if (BitContainer & 1)
BitSetStr = "1" + BitSetStr;
else
BitSetStr = "0" + BitSetStr;
BitContainer = BitContainer >> 1;
}
// далее смотрим BitSetStr;