Я пытаюсь взять 11 MSB бит и получить их значение, как это:Возьмите несколько MSB, от ИНТА
value = lineIntData & 0xFFE00000 >> 21;
lineIntData является числом 8 шестнадцатеричных цифр.
Я не понимаю, почему я получаю ошибку компиляции: "Cannot Implicitly convert Long to Int"
. Ошибка исчезнет, если я либо возьму одну цифру из шестнадцатеричной маски (таким образом, сделав ее 7 цифр), либо изменив int с int
на long
.
Почему я даже получаю эту ошибку? Разве не одна шестнадцатеричная цифра занимает 4 бита, что означает, что 8 цифр - 32 бита, поэтому все они должны соответствовать одному Int32? Если я делаю это неправильно, то как я могу принять значение 11 msbs числа?
Попробуйте 'unsigned int' вместо' int' – Dialecticus
Jon Skeet - эксперт здесь (* the * expert для C#), поэтому его решение, скорее всего, более корректно, чем я мог когда-либо собрать. И я не был уверен в актерском составе, поэтому написал его в комментарии, а не в ответе. – Dialecticus