On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



ссылка на сообщение  Отправлено: 21.12.16 23:01. Заголовок: перевести байты в ГВ


Вот на ночь глядя адовищно туплю и не могу произвести элементарное действие :(
дана ёмкость носителя в байтах (строка символов) 2945999958016 и необходимо перевести её в гигабайты. Как бы это сделать поизящнее при том что доступны только 16-битные переменные.

( причем в результате на морде прибора получается 2744.59 GB :( и деление на 1024 в калькуляторе как то не помогает получить нужное значение, как они его там получали...)

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 12 [только новые]


постоянный участник




ссылка на сообщение  Отправлено: 21.12.16 23:28. Заголовок: Посмотрите модуль дл..


Посмотрите модуль для рекордера Epiphan.


Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 22.12.16 00:17. Заголовок: сходу модуль не ищет..


сходу модуль не ищется, а как заставить atol возвращать unsigned значения? а то на 4294967295 она бойко возвращает 1.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




ссылка на сообщение  Отправлено: 22.12.16 00:27. Заголовок: Crestron 32-битный ж..


Crestron 32-битный же. 65535 - максимальное число, с которым оперируем.

Один путь - разбирать побайтно, а потом собирать обратно также поразрядно.

Epiphan

Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 22.12.16 00:31. Заголовок: так вот и как число ..


так вот и как число 65535 получить из atoi? помню как то поборол это давно, но не могу вспомнить когда и где :(
по умолчанию он signed выдаёт, то есть до 32767 нормально, а потом обратный отчет идет.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




ссылка на сообщение  Отправлено: 22.12.16 00:33. Заголовок: Если пришло \xFF..


Если пришло \xFF\xFF\xFF\xFF это и будет 65535.

Если у вас Epiphan - берите модуль и пользуйтесь, оно работает.

В каком виде получаете данные в порт?
Определитесь для чего нужны данные - для расчетов или индикации. Это и определит как и чего дальше.

Задачка простая, но нужно решать похожие головоломки постоянно, быстро из головы вылетает.

Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 22.12.16 00:56. Заголовок: Ну вот есть строкова..


Ну вот есть строковая переменная "12345", если подать её в atoi то она возвращает 12345. Как сделать так, чтобы и на строку "54321" возвращалось значение 54321? (Понятно, что переменные unsigned)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




ссылка на сообщение  Отправлено: 22.12.16 01:01. Заголовок: Itoa(x); ..


Itoa(x);




Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 22.12.16 10:55. Заголовок: upd: проблема только..


upd:
проблема только на 2 серии,(на прошивке 4.008.008) на 3 и последней прошивке atoi и atol работает нормально. Странно.

Спасибо: 0 
ПрофильЦитата Ответить





ссылка на сообщение  Отправлено: 22.12.16 15:20. Заголовок: Все зависит от интер..


Все зависит от интерпретации при выводе на экран (дебагер и т.п.) или если вы определили в программе переменную как signed_integer var, то естественно выполняя var=ATOI("54321") вы получаете КАК БЫ отрицательное для программы число, но опять таки отобразить его можно и как 54321.
И не забываем про ATOL() /LtoA()имеющие разрядность LONG INTEGER 4294967295
По поводу GB то конечно это получается последовательным делением значения байт на 1024/1024/1024 Цифра в итоге получается не та что на дисплее, видимо из за округления до размера кластера для данной файловой системы или что то подобного. Тут либо покурить тему с файловой системой или доп.служебной информацией (проще у производителя узнать формулу), либо ввести коэффициент для соответствия информации на дисплее.


Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 22.12.16 15:47. Заголовок: да вроде выяснили уж..


да вроде выяснили уже что зависит от контроллера, функция ATOl/ATOI по разному возвращает результат. Про signed/unsigned я вроде вполне конкретно описал, проблема была именно в этой неоднозначности, так как дома модули писал, но на рабочей системе всё работает правильно, и хрен с ним, 2 серия не актуальна сейчас, хотя я на ней S+ отлаживаю, так как быстрее получается.
Тему закрыть можно.

Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 22.12.16 16:24. Заголовок: совпадают выши вычис..


совпадают ваши вычисления с табло устройства?

для конкртеной цифры 2744.59 GB, (2945999958016/1024/1024/1024) уж точно не работает :)

а вот (2945999958016/1024/1024/1023.66) даёт 2 744,587554553025 если округлить то выйдет 2 744,59


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




ссылка на сообщение  Отправлено: 23.12.16 12:33. Заголовок: Самая общая рекоменд..


Самая общая рекомендация, если стоит задача не терять значимые числа - разбивать приходящие данные на десятичные части, суммировать с весовыми коэффициентами.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 54
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет