Конвертер String >> Boolean

Пользовательские блоки для конвертации различных типов данных, а так-же шифрования и дешифровки
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Конвертер String >> Boolean

#1

Сообщение Dryundel » 07.10.2021{, 16:36}

Конвертер String >> Boolean
.
String-Boolean.jpg
String-Boolean.jpg (4 КБ) 2681 просмотр
Конвертер_String____Bool_(Code_-_Professional).ubi
(78.66 КБ) 100 скачиваний
.
Конвертирует строковую переменную в Boolean.
При наличии на входе "0" - на выходе логический ноль.
В других случаях логическая единица.
Актуален при работе с MQTT

Расширенная версия блока
.
String-Boolean(расширенный).jpg
String-Boolean(расширенный).jpg (10.55 КБ) 2334 просмотра
String-Boolean(расширенный).flp
(242.08 КБ) 64 скачивания
.
В расширенной версии добавлен параметр выбора логики:
- В случае проверки на ноль, - при "0" на входе, на выходе будет логический ноль,
во всех других случаях на выходе будет логическая единица.
- В случае проверки на единицу, - при "1" на входе, на выходе будет логическая единица,
во всех других случаях на выходе будет логический ноль.

Блок не создает дополнительных переменных и имеет короткий код.

Спасибо всем, кто принял участие в дискуссии.
.
Последний раз редактировалось Dryundel 08.10.2021{, 12:55}, всего редактировалось 1 раз.

alexbonk
Рядовой
Сообщения: 28
Зарегистрирован: 05.10.2021{, 13:29}
Репутация: 1
Имя: алексей

Конвертер String >> Boolean

#21

Сообщение alexbonk » 08.10.2021{, 09:27}

alexbonk писал(а):
08.10.2021{, 09:22}
как дидактический материал
там все равно все на стринг сделано.
т.е. прилетает то стринг в мк.
и вы вместо сравнения вводите новую переменную.
ну и где тогда экономия?

alexbonk
Рядовой
Сообщения: 28
Зарегистрирован: 05.10.2021{, 13:29}
Репутация: 1
Имя: алексей

Конвертер String >> Boolean

#22

Сообщение alexbonk » 08.10.2021{, 09:29}

Naladchik писал(а):
07.10.2021{, 18:51}
, не стоит переходить на хи-хи
давайте я уж сам решу куда мне переходить?

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Конвертер String >> Boolean

#23

Сообщение Sancho » 08.10.2021{, 09:31}

Вот за что не люблю отсутствие в топике, заглавном, примера, да просто файла flp с блоками, так это за то, что каждый раз приходится ставить блок в бибку, а потом сносить.
Если есть пример, *.flp, открыл, оценил - надо оно тебе или нет, в случае да - скопировал к себе.
Как-то писал об этом.
Блок не смотрел по вышеуказанной причине.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

alexbonk
Рядовой
Сообщения: 28
Зарегистрирован: 05.10.2021{, 13:29}
Репутация: 1
Имя: алексей

Конвертер String >> Boolean

#24

Сообщение alexbonk » 08.10.2021{, 09:31}

Phazz писал(а):
07.10.2021{, 18:42}
не создает дополнительных переменных
прилетел стринг в мк.
вы добавили еще и булеан переменную: теперь в проекте и стринг и булеан одновременно.

@?&*$?

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Конвертер String >> Boolean

#25

Сообщение Dryundel » 08.10.2021{, 09:37}

alexbonk писал(а):
08.10.2021{, 09:31}
прилетел стринг в мк.
вы добавили еще и булеан переменную.
Вероятно Вы не тестировали блок. А зачем тогда высказывать свои предположения, да еще выдавать их за истину?

alexbonk
Рядовой
Сообщения: 28
Зарегистрирован: 05.10.2021{, 13:29}
Репутация: 1
Имя: алексей

Конвертер String >> Boolean

#26

Сообщение alexbonk » 08.10.2021{, 09:38}

Dryundel писал(а):
07.10.2021{, 16:36}
А теперь представьте что у вас 50 каналов управления. Это +50 переменных String и еще столько же дополнительных boolean
ну так эти стринги в любом случае на мк будут!!!

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Конвертер String >> Boolean

#27

Сообщение Dryundel » 08.10.2021{, 09:38}

Sancho писал(а):
08.10.2021{, 09:31}
Вот за что не люблю отсутствие в топике, заглавном, примера, да просто файла flp с блоками, так это за то, что каждый раз приходится ставить блок в бибку, а потом сносить.
Обязательно учту данное пожелание в дальнейшем.

Отправлено спустя 1 минуту 44 секунды:
alexbonk писал(а):
08.10.2021{, 09:38}
ну так эти стринги в любом случае на мк будут!!!
Исходные естественно будут, а вот дополнительных не создастся как в предложенном варианте.
Вы реально понимаете о чем я говорю?

alexbonk
Рядовой
Сообщения: 28
Зарегистрирован: 05.10.2021{, 13:29}
Репутация: 1
Имя: алексей

Конвертер String >> Boolean

#28

Сообщение alexbonk » 08.10.2021{, 09:40}

Dryundel писал(а):
08.10.2021{, 09:38}
Вероятно Вы не тестировали блок. А зачем тогда высказывать свои предположения, да еще выдавать их за истину
ну мне куда то нужно результат из вашего блока положить?
для этого нужно будет создать еще одну переменную булеан.
К уже существующей стринг создать еще одну, но булеан.
Последний раз редактировалось alexbonk 08.10.2021{, 09:42}, всего редактировалось 1 раз.

alexbonk
Рядовой
Сообщения: 28
Зарегистрирован: 05.10.2021{, 13:29}
Репутация: 1
Имя: алексей

Конвертер String >> Boolean

#29

Сообщение alexbonk » 08.10.2021{, 09:42}

Dryudel писал(а):
08.10.2021{, 09:40}
реально понимаете о чем я говорю
я понимаю.
но вы не те аргументы приводите в защиту своего творения
Последний раз редактировалось alexbonk 08.10.2021{, 09:43}, всего редактировалось 1 раз.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Конвертер String >> Boolean

#30

Сообщение Dryundel » 08.10.2021{, 09:42}

alexbonk писал(а):
08.10.2021{, 09:42}
но вы не те аргументы приводите в щащиту своего творения
Какой аргумент Вас не устроил?

Отправлено спустя 3 минуты 24 секунды:
alexbonk писал(а):
08.10.2021{, 09:42}
я прнимаю.
А по моему не понимаете.
Попробуйте сделать подобный блок на if else, посмотрите скомпилированный код, а потом сравните с кодом который получится с этим блоком. Вот тогда и поговорим.
Последний раз редактировалось Dryundel 08.10.2021{, 09:46}, всего редактировалось 1 раз.

alexbonk
Рядовой
Сообщения: 28
Зарегистрирован: 05.10.2021{, 13:29}
Репутация: 1
Имя: алексей

Конвертер String >> Boolean

#31

Сообщение alexbonk » 08.10.2021{, 09:46}

Dryundel писал(а):
08.10.2021{, 09:42}
Какой аргумент Вас не устроил?
про доп.переменную.

а нужно было примерно так сказать:
-выигрыш сего блока не в экономии переменных, а в скорости обработки данных!
ведь стринг обработать/сравнить/прочее - это вам не с булеаном взаимодействовать!

вот такая должна была быть аннотация у блока.
*забирайте - дарю вашему блоку :)

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Конвертер String >> Boolean

#32

Сообщение Dryundel » 08.10.2021{, 09:50}

alexbonk писал(а):
08.10.2021{, 09:46}
про доп.переменную.

а нужно было примерно так сказать:
-выигрыш сего блока не в экономии переменных, а в скорости обработки данных!
ведь стринг обработать/сравнить/прочее - это вам не с булеаном взаимодействовать!

вот такая должна быть аннотацмя у блока.
*забирайте - дарю вашему блоку
А что если это действительно так? Что если доп. переменные действительно не создаются? Может Вы все таки проверите свои доводы, прежде чем говорить?

Отправлено спустя 5 минут 32 секунды:
alexbonk писал(а):
08.10.2021{, 09:46}
вот такая должна была быть аннотация у блока.
*забирайте - дарю вашему блоку
Вот снова вы не внимательны, да еще и забываете что я Вам отвечал.
Dryundel писал(а):
07.10.2021{, 23:43}
А хоть бы и так. Экономия ресурсов. Трафик String и преобразования весьма ресурсоемкая операция.
Хотя есть и другие тонкости, об этом я писал выше. Будьте чуть внимательней.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Конвертер String >> Boolean

#33

Сообщение Sancho » 08.10.2021{, 09:56}

Честно, не понимаю в чём сыр бор.
Я бы сделал так.

byte test=string.charAt(0) ;
if(test == 48) out=false;
else if(test == 49) out=true;

Можно ещё дополнительную проверку на длину, только один входящий символ, сделать.
Завернуть всё это в функцию, аргумент через ссылку, результат на выход.
Это что-бы вообще по фэншую.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

alexbonk
Рядовой
Сообщения: 28
Зарегистрирован: 05.10.2021{, 13:29}
Репутация: 1
Имя: алексей

Конвертер String >> Boolean

#34

Сообщение alexbonk » 08.10.2021{, 09:59}

Dryundel писал(а):
08.10.2021{, 09:50}
Что если доп. переменные действительно не создаются
еще раз - результат где будет храниться? (тот который на выходе из блока)
куда то нужно записать его? чтобы далее в проекте использовать.

Вот я именно про эту переменную, а не про промежуточную.

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

А если нужно разложить стринг один раз, извлечь из него нужное, раскидать по переменным и забыть до следующего появления свежих данных в этом стринге?

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

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

Конвертер String >> Boolean

#35

Сообщение edyapd » 08.10.2021{, 10:00}

Dryundel писал(а):
07.10.2021{, 16:36}
Конвертирует строковую переменную в Boolean.
При наличии на входе "0" - на выходе логический ноль.
В других случаях логическая единица.
Как по мне, то я бы сделал при значениях "" (пустая строка), "false", "off" и возможно при "no", "not" = false.

Хотя в каждом языке программирования свои правила. Сейчас глянул ЗДЕСЬ "0" не может быть преобразован в boolean. А например ЗДЕСЬ говорят, что "0" будет true. Если что, это ссылки на разные языки.
Последний раз редактировалось edyapd 08.10.2021{, 10:09}, всего редактировалось 1 раз.

alexbonk
Рядовой
Сообщения: 28
Зарегистрирован: 05.10.2021{, 13:29}
Репутация: 1
Имя: алексей

Конвертер String >> Boolean

#36

Сообщение alexbonk » 08.10.2021{, 10:07}

0:45.95:1:23.11:2:99.01:3:11:4:33.72:5:77:6:0:7:1:8:33.27

с таким стрингом что будет делать ваш блок?
его же сначала надо
1.распарсить.
2.конвертировать в необходимые переменные

вы получается предлагаете эти пункты проделывать каждый раз?

я вот про это вот.
Последний раз редактировалось alexbonk 08.10.2021{, 10:15}, всего редактировалось 1 раз.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Конвертер String >> Boolean

#37

Сообщение Dryundel » 08.10.2021{, 10:09}

Sancho писал(а):
08.10.2021{, 09:56}
Честно, не понимаю в чём сыр бор.
Я бы сделал так.

byte test=string.charAt(0) ;
if(test == 48) out=false;
else if(test == 49) out=true;

Можно ещё дополнительную проверку на длину, только один входящий символ, сделать.
Завернуть всё это в функцию, аргумент через ссылку, результат на выход.
Это что-бы вообще по фэншую.
Sancho, я конечно понимаю, что читать всё, не хватит времени.
Специально для тебя коротко. Я уверен что ты поймешь о чем речь.

Блок не создает доп переменных вообще. Актуален при работе с MQTT когда требуется большое количество каналов. Каждый канал это SMS типа String. За счет оптимизации избавляемся от доп. переменных и экономим на ресурсах за счет обработки. (это кратко)
Это маленький и легкий блок. Вот в чем основная идея.

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Конвертер String >> Boolean

#38

Сообщение Phazz » 08.10.2021{, 10:12}

Dryundel писал(а):
08.10.2021{, 09:26}
Это +50 переменных String
а от куда взялись дополнительные sring переменные?

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Конвертер String >> Boolean

#39

Сообщение Dryundel » 08.10.2021{, 10:15}

alexbonk писал(а):
08.10.2021{, 09:59}
еще раз - результат где будет храниться? (тот который на выходе из блока)
куда то нужно записать его? чтобы далее в проекте использовать.
Ну хорошо. Давайте подробнее. Нет там результата. Блок не генерирует его в переменную. Вход блока пользуется переменной с другого блока, а выход сделан так что либо использует входную переменную другого блока, либо сразу команда на пин идёт. Согласен, это сложно осознать пока не попробуешь и не увидишь своими глазами.
alexbonk писал(а):
08.10.2021{, 09:59}
это нера
alexbonk писал(а):
08.10.2021{, 09:59}
вы же предлагаете гонять по проекту стринг. но зачем, если нужно это сделать один раз?
Ну зачем же Вы ерунду говорите. Похоже Вы просто запутались.

alexbonk
Рядовой
Сообщения: 28
Зарегистрирован: 05.10.2021{, 13:29}
Репутация: 1
Имя: алексей

Конвертер String >> Boolean

#40

Сообщение alexbonk » 08.10.2021{, 10:19}

Dryundel писал(а):
08.10.2021{, 10:15}
зачем же Вы ерунду говорите
0:22.45:1:34.67:2:11:3:77.9:4:11.03:5:45:6:62.78:7:1233:8:0

что будет с этим делать ваш блок?

Ответить

Вернуться в «Конвертация типов, шифраторы и дешифраторы»