В настоящее время я участвую в книге «Справочник по shellcoder», у меня есть сильное понимание c, но в последнее время я столкнулся с фрагментом кода, который я не могу понять.Что делает [0] = addr & 0xff?
Вот кусок кода:
char a[4];
unsigned int addr = 0x0806d3b0;
a[0] = addr & 0xff;
a[1] = (addr & 0xff00) >> 8;
a[2] = (addr & 0xff0000) >> 16;
a[3] = (addr) >> 24;
Таким образом, вопрос, что делает это, что адр & 0xff (и три линии под ним) и что делает >> 8 к ней (я знаю что он делит его 8 раз на 2)? Пс: не стесняйтесь говорить мне, если у вас есть идеи для тегов, которые я должен использовать.
'(addr) >> X' не является делением на' 8'. Это может быть правдой в некоторых случаях, но '>>' является * правым сдвигом * 'addr' числом * байтов *, заданным' X'. –