Я новичок в этом, поэтому я начну с того, что, когда я просматривал какой-то код, я понял, что эта функция не имеет для меня никакого смысла.Преобразование unsigned char в int и short
Как вы можете видеть, эта конкретная функция использует побитовые операторы для преобразования 4 неподписанных элементов char в целое число.
// Преобразует массив из четырех символов в целое, используя мало-Endian образуют
int toInt(const char* bytes) {
return (int)(((unsigned char)bytes[3] << 24) |
((unsigned char)bytes[2] << 16) |
((unsigned char)bytes[1] << 8) |
(unsigned char)bytes[0]);
}
short toShort(const char* bytes) {
return (short)(((unsigned char)bytes[1] << 8) |
(unsigned char)bytes[0]);
}
Я уже знаю, как побитовое операторы и как символ использует 1 байт и INT использует 4 байта. Почему бы перемещать char биты в 24 бита влево и чем просто явно преобразовать его в int, преобразовать его в int? Почему для этой функции нужны побитовые операторы?
Эта функция выходит за рамки моего понимания, пожалуйста, объясните этот код и как он работает или, по крайней мере, предоставит мне ссылку, которая объясняет это.
Я искал всюду для объяснения, но не смог найти его.
Возможно, это достаточно простое объяснение.
Использование оператора << на типе короче междунар автоматически способствует вход в int. Окончательный набор не нужен. –