Код ниже читает 4 байта из сокета в целое число. Я вижу, что байты (в десятичной форме) 130 0 0 0. Я подозреваю, что приведенный ниже код вернет версию 130, но я не знаю почему. Будет ли это возвращение 130? Я попытался воспроизвести его на Java, но у меня очень большое отрицательное число (больше того, чего я ожидал бы). Как я могу интерпретировать код псевдо/C ниже?Преобразование 4 байтов сокетов в int
#include <socket.h>
void readVersion(char *buf, int iCount) {
recv(hSocket, buf, iCount, MSG_WAITALL);
}
int m_iVersion;
readVersion((char *) &m_iVersion, sizeof (m_iVersion))
count << m_iVersion;
Я думаю, что ваш настоящий вопрос о _ [endianness] (http://en.wikipedia.org/wiki/Endianness) _. – ildjarn
Что такое функция 'void', которая должна возвращаться? – SingleNegationElimination
Я бы настоятельно предложил просто не использовать приводы таким образом. Проверьте спецификацию используемого протокола и интерпретируйте четыре байта в соответствии с этим протоколом. Не просто делайте то в «int» с отливом и надейтесь на лучшее. –