Как получить доступ к индивидуальному номеру элемента массива в C? - PullRequest
1 голос
/ 09 августа 2010

Если у меня есть какой-либо элемент массива, как я могу получить отдельные числа из элемента массива buffer[0]?

Например, предположим, у меня есть buffer[0]=0x0605040302, я хотел бы сначала извлечь 2, затем 0, затем 6 и т. Д.

1 Ответ

4 голосов
/ 09 августа 2010

Содержимое элемента массива - ОДИН номер. Вы пытаетесь извлечь ЦИФРУ из него. Ищите маскирование и сдвиг - операторы & и >>.

EDIT:

Маска - это строка из «0» и «1», которая позволяет вам выделить интересующие биты из числа. Маска, содержащая шестнадцатеричную цифру 0xF, используется для выделения отдельных шестнадцатеричных цифр в числе. Например:

num = 0x4321 (= 0100_0011_0010_0001)
mask = 0x00f0 (= 0000_0000_1111_0000)
num & mask = 0x0020 (= 0000_0000_0010_0000)

Сдвиг числа эффективно переводит требуемый бит в требуемую позицию в числе. Таким образом, сдвиг числа вправо на n позиций приведет к тому, что бит # n будет размещен на месте # 0.

num = 0x4321 (= 0100_0101_0010_0001)
num >> 8 = 0x0043 (= 0000_0000_0100_0011)

Объедините две операции, и вы получите извлеченную цифру!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...