Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Есть массив char dataB[4], содержащий число в формате little endian, нужно переменной long int dataI присвоить это число (+)
Отправлено
tivocr
06 апреля 2009, г. 10:17
как бы это сделать попроще без привязки к компилятору?
Составить ответ
|
Вернуться на конференцию.
Ответы
Реально никак.
-
xDr_D
(06.04.2009, 14:37:11
212.57.188.177
, 350 байт)
а вообще наврал про реально никак
-
xDr_D
(06.04.2009, 14:39:55
212.57.188.177
, 315 байт)
Что-то я не понял. Если про массив известно, в каком формате лежит число, то никаких Test не нужно и if-ов тоже. Если в массиве LE, то B[0] всегда младший байт и его всегда "не нужно" сдвигать (а если целевая машинка BE то компилятор задвинет сам).
-
ReAl
(06.04.2009, 15:58:25
89.162.152.53
,
пустое
)
Нет
-
xDr_D
(07.04.2009, 07:14:37
212.57.188.177
,
пустое
)
Кошерный способ из учебника
-
vitalyn
(06.04.2009, 13:07:59
192.168.1.101,217.117.85.98
, 149 байт)
что-то вызывает сомнение этот пример... (byte1 << byte2) в итоге буде...{+}(+)
-
A_R_V
(06.04.2009, 13:45:41
172.20.20.19,87.117.1.141
, 251 байт)
нормально будет все и без UL....
-
ы
(06.04.2009, 13:49:13
80.92.98.211
,
пустое
)
WinAVR 20090313 - НЕ НОРМАЛЬНО. нормально будет только для платформ, у кото...{+}
-
A_R_V
(06.04.2009, 14:25:28
172.20.20.19,87.117.1.141
, 246 байт)
UL возле константы тут не нужно вообще, у << могут быть разные типы операндов и приведения к одному не делается. (+)
-
ReAl
(06.04.2009, 15:50:42
89.162.152.53
, 263 байт)
Ответ: например, так
-
A_R_V
(06.04.2009, 11:43:24
172.20.20.19,87.117.1.141
, 93 байт)
итогда уж проще так: long data = *((long *) dataB);
-
kan
(06.04.2009, 14:41:2
192.168.3.9,62.205.163.4
,
пустое
)
поспешил... (void*) перед dataB для исключения ворнинга...
-
A_R_V
(06.04.2009, 11:44:37
172.20.20.19,87.117.1.141
,
пустое
)
массив char dataB[4] объявить через union. Потом в лоб и присвоить. для IAR-C и PICC, PICC18 так можно.
-
atlant
(06.04.2009, 10:26:14
89.248.115.162
,
пустое
)
А есть требование в стандарте С по размещению long int в памяти?
-
tivocr
(06.04.2009, 10:53:30
92.113.159.61
,
пустое
)
Имею ввиду: big/little endian
-
tivocr
(06.04.2009, 10:58:49
92.113.159.61
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 654:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru