Скажите пожалуйста, как выделить последний байт (старший, левый) из числа типа int в переменную типа char?
char myCh = (((unsigned int)temp) >> 24) & 0xFF;(в принципе, можно было бы и не приводить к unsigned int, но я всегда привожу к беззнаковому типу, во избежание проблем при сдвигах). Еще лучше - не привязываться к 24, а сделать (sizeof(unsigned int) - 1) * 8 вместо этого.
А можно ввести union:
union Int2BytesТогда можно сделать так:
{
int Int;
char Bytes[4];
};
Int2Bytes b;и обращаться к байтам как к b.Bytes[0] (младший), b.Bytes[1] (второй) и так далее.
b.Int = temp;
Не плоди лишние сущности. Зачем тебе именованный union, если можно сделать анонимный (хотя я бы с union-ами вообще не стал заморачиваться. Конструктор/Деструктор и все сопутствующие этому издержки), и избавиться от "b."?
А можно поподробнее? Я думал, у union нет конструктора.
Добавлено через 7 мин.
PS Анонимные объединения, имхо, путаницу вызывают, хотя, кому как нравится.
И правда. Спасибо, volvo.