Извлечь 2 байта (u_short) из указателя - PullRequest
1 голос
/ 25 мая 2011

У меня есть указатель, и я хочу присвоить байты от x до (x + 1) короткому беззнаку.Я надеялся, что смогу просто

(unsigned short) pointer[x]

, но первый байт, кажется, всегда пуст.Но когда я проверяю значения байтов x и x + 1 по отдельности, данные там.

Где я noobed?(Я просто сделал это глаголом)

1 Ответ

2 голосов
/ 25 мая 2011
unsigned short i = (pointer[x] << 8) + pointer[x+1]

Предполагая, что вы хотите, чтобы x был старшими битами, а x + 1 - младшими битами.На самом деле, вы также должны помнить о порядке байтов.

РЕДАКТИРОВАТЬ:

Это также может работать:

*(unsigned short *) pointer[x]

Однако это будет зависеть от порядка байтов, например, в младшем порядке байтов первый байт будет младшим8 бит, в то время как x + 1 будет старшими байтами.

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