-
- У тебя преобразование типов float -> UNSIGNED!!! int. При отрицательном float-e результат неопределен. - il-2(24.11.2018 19:03)
- так я уже давно согласный! И как мне сделать знаковое преобразование из float? Кстати, если для sprintf предложить число 0хFFFFFFFA, то исправно получается строка"-0006". Т.е. сам sprintf всё понимает. :-) - Лагунов(25.11.2018 06:56)
- Кстати, да. - SciFi(24.11.2018 19:34)
- Предлагаю принести в студию в двоичном виде байты и биты (с номерами) образцов реально полученного положительного и отрицательного числа, мы тут быстро разберёмся. - SciFi(24.11.2018 17:49)
- а для положительных чисел вот типовой пример. Уровнемер передает мне три байта - 0x83, 0x9A, 0x42. Т.е. получаем массив - 0x00, 0x83, 0x9A, 0x42. После этого получается out=77,2558594. Я дальше беру число для индикации - 7725. Вопрос только в этом Лагунов(30 знак., 25.11.2018 07:04)
- положительное 0x42, отрицательное 0xС2 - Vit(25.11.2018 07:36)
- спасибо, значит последний байт - старший :-) - Лагунов(25.11.2018 09:52)
- 0x429A8300 - Vit(25.11.2018 10:45)
- да, именно так. Сейчас смоделировал. Перед преобразованием сбрасываю ст. бит в 0хС2. И устанавливаю признак минуса для индикации. Всё получилось. У меня вбито предыдущими годами в 8-битнике (Z8), что старший байт - в начале с меньшим адресом. :-) - Лагунов(25.11.2018 10:51)
- Почитайте на досуге про больших и малых индейцев. Будет увлекательно. - SciFi(25.11.2018 10:03)
- Человек, работающий в эмбеддеде и не знающий про индейцев - страшное сочетание - lloyd(25.11.2018 10:19)
- и чего? Шерлок Холмс тоже знал только то, что ему сегодня надо знать. - Лагунов(25.11.2018 13:48)
- Кстати, исторически сложилось так, что в сетевых протоколах гоняют старший байт первым. Эти ваши монополисты с уровнемерами не по канону делают. Раскольники они. - SciFi(25.11.2018 14:40)
- Ну да, и больше одной архитектуры МК ему никогда в жизни не понадобится. - lloyd(25.11.2018 14:06)
- Этот стервец Холмс вообще без МК обходился... - SciFi(25.11.2018 14:35)
- и чего? Шерлок Холмс тоже знал только то, что ему сегодня надо знать. - Лагунов(25.11.2018 13:48)
- Человек, работающий в эмбеддеде и не знающий про индейцев - страшное сочетание - lloyd(25.11.2018 10:19)
- 0x429A8300 - Vit(25.11.2018 10:45)
- спасибо, значит последний байт - старший :-) - Лагунов(25.11.2018 09:52)
- положительное 0x42, отрицательное 0xС2 - Vit(25.11.2018 07:36)
- беда как раз с отрицательными. Я их ни разу живьем не видел. Вот на неделе приеду в поле к резервуару и уровнемеру - попробую зафиксировать. - Лагунов(25.11.2018 06:44)
- а для положительных чисел вот типовой пример. Уровнемер передает мне три байта - 0x83, 0x9A, 0x42. Т.е. получаем массив - 0x00, 0x83, 0x9A, 0x42. После этого получается out=77,2558594. Я дальше беру число для индикации - 7725. Вопрос только в этом Лагунов(30 знак., 25.11.2018 07:04)
- У тебя преобразование типов float -> UNSIGNED!!! int. При отрицательном float-e результат неопределен. - il-2(24.11.2018 19:03)