Форум вопросов и ответов

Форум вопросов и ответов (https://www.otvetnemail.ru/)
-   Новый архив 2 (https://www.otvetnemail.ru/novyj-arhiv-2-812/)
-   -   проблема преобразования char в unsigned short (https://www.otvetnemail.ru/novyj-arhiv-2-812/problema-preobrazovaniya-char-v-unsigned-short-234824/)

Guest 28.09.2011 00:16

проблема преобразования char в unsigned short
 
Компилю в Visual C++8Не могу понять почему переставлены байты. Суть явления есть структура с элементами типа char и unsigned short. Она заполняется при чтении файла.TError вызов функции GetNextLogData(&Head, hSize) //где head указатель на стурктуру ;unsigned long hSize=sizeof(Head) GetNextLogData(void *buf, word32 &len){ word32 tmp, rdPortion; char* bf=(char*)buf; int16 tmp2=1; for(tmp=len; !Error() && tmp2 && tmp>0 && lenCurrentRecord>0;) { rdPortion=(tmp>lenLogPart)?lenLogPart:tm p; if((tmp2=read(handle, bf, rdPortion))==-1) Error(emReadError);и тд. Суть проблемы в том что после заполнения структуры поле с unsigned short значением имеет переставноленные байты (должно быть 17222 ('C''F') реальное значение получается 17987 ('F''C')).Код портируется из DOS компилировался в BorlandC 3.1 там было все нормально (те последовательность байт после преобразования была верной)


Часовой пояс GMT, время: 13:26.


© www.otvetnemail.ru - Форум вопросов и ответов.