![]() |
|
|
![]()
|
|
| Гость_Dreamer |
|
|||
|
Unregistered |
Столкнулся с такой проблемой. (Или это у меня глюки у самого какие-то?)
В Visual studio 6 у меня был такой фрагмент кода, который занимался пересылкой чисел по последовательному порту. Особенности пересылки состоят в том, что надо передовать побайтно. Передавал типы unsigned int и float. Делал следующим образом. /* фрагмент кода, где подготавливаются данные для передачи. tchar - байт, который надо передать SendTChar(unsigned char) - функция, которая передает этот байт на внешний прибор itemp - два байта данных для передачи (целое число) ftemp - вещественное число */ unsigned short int itemp; float ftemp; unsigned char * ctemp; /* .........Где-то тут itemp и ftemp приняли нужные значения, которые надо передать*/ //Теперь передадим оба байта числа itemp ctemp=(unsigned char*)&itemp; SendTChar(*ctemp); SendTChar(*(ctemp+1)); //а теперь ftemp ctemp=(unsigned char*)&ftemp; SendTChar(*ctemp); SendTChar(*(ctemp+1)); SendTChar(*(ctemp+2)); SendTChar(*(ctemp+3)); //Конец кода. Пример. Пусть itemp=10500;ftemp=-0.05; Соответственно hex-код переданных данных будет таков: 29 04 bd 4c cc cd Все хорошо работает. Но вот поставил Visual Studio.Net и откомпилировал все там. В результате получилось 04 29 cd cc 4c bd Получилось, что в шестой студии компилятор расолагает перемнные в естественном порядке, а в Net - младшими байтми вперед. Это как-то опционально меняется, или это раз и навсегда так сделано? Всем спасибо. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |