Страница 1 из 1
Перевод бинарной строки в число
Добавлено: 12 сен 2019, 10:46
smol
Привет Всем. Чей то никак мысль не идет, надо перевести строку в бинарном виде пример 01110000 в число. Как то все громоздко получается, может у кого есть идеи.
Перевод бинарной строки в число
Добавлено: 12 сен 2019, 11:12
Naladchik
1. Разбить на символы, посимвольное сравнение и далее суммирование. 2 в нулевой степени + 2 в первой + 2 во второй и т.д.
2. Оформить в пользовательский блок.
[spoiler]
555.png
[/spoiler]
Перевод бинарной строки в число
Добавлено: 12 сен 2019, 15:37
smol
была мысль заполнить стек (массив) но вот как потом вытянуть (сложить)
Перевод бинарной строки в число
Добавлено: 12 сен 2019, 16:14
Sancho
Есть цикл - используй его....
Отправлено спустя 19 минут 48 секунд:
Пример. Возможны ошибки...
[spoiler]
screenshot_19-09-12_16-32-26.png
[/spoiler]
Например, должно быть - выполнять пока "НЕ равно 0"... А один, первый скачавший, имеет "равно 0"
Перевод бинарной строки в число
Добавлено: 12 сен 2019, 16:30
rw6cm
smol писал(а): 12 сен 2019, 10:46
надо перевести строку в бинарном виде пример 01110000 в число.
[spoiler]
2019_09_12_16_16_32_Window.png
[/spoiler]
Перевод бинарной строки в число.flp
Перевод бинарной строки в число
Добавлено: 12 сен 2019, 17:24
smol
!! Спасибо!

Перевод бинарной строки в число
Добавлено: 12 сен 2019, 19:28
Naladchik
[ref=#ff8000]rw6cm[/ref],
Не самый удачный вариант.
1. Для полного преобразования требуется 8 программных циклов.
2. Во время преобразования число на выходе постоянно меняется. Запись значения в переменную "число" лучше производить по окончанию преобразования.
3. Если, во время преобразования, изменится бинарная строка, то на выходе будет непредсказуемый результат. Нужен детектор изменения.
4. Да и зачем постоянно преобразовывать одно и тоже число? Опять детектор.
Перевод бинарной строки в число
Добавлено: 13 сен 2019, 02:38
rw6cm
[ref]Naladchik[/ref],
Согласен с Вами.
Просто ТС спрашивал
smol писал(а): 12 сен 2019, 15:37
была мысль заполнить стек (массив) но вот как потом вытянуть (сложить)
Как один из вариантов предложил.
К тому же не ясно, от куда и как бинарка будет браться, куда число будет передаваться,
отсюда и нюансов, что добавить/изменить, может быть много.
Также как и вариантов преобразовать бинарную строку в программе флп.
Можно такой вариант.
[spoiler]
2019_09_13_02_20_58_FLProg_5.3.0.png
[/spoiler]
Перевод бинарной строки в число_1.flp
Перевод бинарной строки в число
Добавлено: 13 сен 2019, 06:48
Naladchik
[ref=#ff8000]rw6cm[/ref],
Вот этот Ваш вариант конвертации, по моему мнению, наиболее простой и адекватный.
Какой смысл с массивом заморачиваться если нужно просто "...перевести строку в бинарном виде пример 01110000 в число..."?
И еще пару копеек...
[spoiler]
Единственный момент. Имеет смысл заменить "Получение подстроки" на "Получить символ из строки". В этом случае не будут объявляться ненужные переменные, соответственно не будет замусориваться память.
[spoiler]
123.png
456.png
Результат тот же, но промежуточные переменные не требуются , да и работать побыстрее должно.[/spoiler]
Осталось в пользовательский блок завернуть и можно пользоваться.
[/spoiler]
Перевод бинарной строки в число
Добавлено: 13 сен 2019, 08:48
Sancho
Ну вот, а мой вариант даже не рассматривают

Перевод бинарной строки в число
Добавлено: 13 сен 2019, 10:15
Naladchik
[ref=#ff8000]Sancho[/ref],
Sancho писал(а): 13 сен 2019, 08:48
Ну вот, а мой вариант даже не рассматривают
А что там рассматривать, все прозрачно и понятно.
Но пара копеек все равно имеются.
[spoiler]
я бы сделал так:
123.png
Бинарная строка в байт v01_1.flp
1. Преобразование будет выполняться только по изменению входных данных.
2. Длина строки входных данных произвольная от 0 до 16 бит.
3. Ну и декремент надо делать все таки в конце цикла а не в начале.
[/spoiler]
Перевод бинарной строки в число
Добавлено: 13 сен 2019, 11:40
Sancho
[ref]Naladchik[/ref], Насколько я помню, адресация/индексация символов в строке - с нуля.
Итого, если их всего восемь, то самый правый, младший, имеет индекс 7, а старший - 0.
В Вашем варианте - обращения будут сначала к 8, которого не существует, а о старшем - забудут.
Поэтому -1 сразу.
Если не прав - поправьте.
Вопрос о частоте обработки не рассматривался вообще, но было учтено кол-во символов, 8. Если другое - предыдущий результат не изменяется.
Перевод бинарной строки в число
Добавлено: 13 сен 2019, 17:34
Naladchik
[ref=#ff8000]Sancho[/ref],
Sancho писал(а): 13 сен 2019, 11:40...Насколько я помню, адресация/индексация символов в строке - с нуля...
Тут Вы совершенно правы. По поводу декремента я погорячился, его действительно надо ставить первым.
Sancho писал(а): 13 сен 2019, 11:40...Вопрос о частоте обработки не рассматривался вообще...
Ну тут кому как, лично меня напрягает когда выполняется бесполезная работа. Тут же работа в цикле, причем со строковыми данными и времени на работу с ними требуется весьма прилично. Так что использование детектора считаю обоснованным.
Sancho писал(а): 13 сен 2019, 11:40...но было учтено кол-во символов, 8...
Да это уже так, задел на перспективу. Раз уж пошла в ход тяжелая артиллерия типа выполнения плат по условию, работа в цикле то пусть данный алгоритм решает несколько вариантов данной задачи а не один единственный.
[spoiler]
123.png
Бинарная строка в байт v01_2.flp
[/spoiler]