void unpackWideString(BYTE **buf, WCHAR *string, WORD len)
{
BYTE *tmp = *buf;
while (len > 1)
{
*string = (*tmp++ << 8);
*string |= *tmp++;
string++;
len -= 2;
}
}
[С] сложные операции с указателями
Код:
не могу разобраться что именно происходит в этих двух строках
Код:
*string = (*tmp++ << 8);
*string |= *tmp++;
*string |= *tmp++;
Цитата: himas
не могу разобраться что именно происходит в этих двух строках
Код:
*string = (*tmp++ << 8);
*string |= *tmp++;
*string |= *tmp++;
Собственно, ничего сложного тут нет. Преобразование из BYTE в WCHAR. Сдвигает первое значение из *tmp на 8 бит влево, а следующее значение - присваиванием с бинарным ИЛИ. Все операции с инкрементом, т.к. двигаемся по строке. Таким образом, два значения типа BYTE преобразуем в одно WCHAR.