Конвертация строки в массив byte, char

Пользовательские блоки для конвертации различных типов данных, а так-же шифрования и дешифровки
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Ответить
aidar_i
Полковник
Сообщения: 1982
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 266
Откуда: Уфа
Имя: Айдар
Контактная информация:

Конвертация строки в массив byte, char

#1

Сообщение aidar_i » 12.12.2020{, 12:26}

Создал ПБ конвертации строки в массив byte: byte byteArray[MaxByteArraySize] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
Создан для применения с MAC адресом или IP , и тп.
По умолчанию конвертация MAC адреса.
Данный ПБ можно использовать самостоятельно, внеся изменения в ПБ, с которым он используется в проекте (в описании).
Или встроить в создаваемые ПБ, где нужно вводить МАС адрес или IP или другое со входа блока.
Описание в ПБ.
Перевод_строки_в_массив_byte_(Code_-_Basic).ubi
Пример применения ПБ здесь.

Создал ПБ конвертации строки в массив char : char char_array[ArraySize] = " Text_String";
Данный ПБ можно использовать самостоятельно, внеся изменения в ПБ, с которым он используется в проекте (в описании).
Или встроить в создаваемые ПБ, где нужно вводить строку со входа блока (особенно для дисплеев).
Перевод_строки_в_массив_char_(Code_-_Basic).ubi
Для скачивания вложений Вы должны быть зарегистрированы.

ecoins
Подполковник
Сообщения: 1230
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 210
Откуда: Шатура
Имя: Энвер

Конвертация строки в массив byte, char

#2

Сообщение ecoins » 12.12.2020{, 14:35}

Сталкивался с подобной задачей, но с русским текстом.
В Arduino он в формате UTF-8. Соответственно каждый русский символ представлен двумя байтами (первый 0xCO и второй код символа).
Из-за этого при вычисление длины строки функцией str.length() длина удваивается на количество русских символов.
Пробовал вытаскивать из строки побайтно, но явно такой функции не обнаружил.
Таким образом, задача подсчитать правильно длину строки с русскими символами осталась нерешенной. Пришлось как-то на "полу-костылях" решать проблему.
Может у Вас есть идеи или решение такой задачи?

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

Конвертация строки в массив byte, char

#3

Сообщение Sancho » 12.12.2020{, 16:05}

ecoins писал(а):
12.12.2020{, 14:35}
Может у Вас есть идеи или решение такой задачи?
Может пригодится.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

ecoins
Подполковник
Сообщения: 1230
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 210
Откуда: Шатура
Имя: Энвер

Конвертация строки в массив byte, char

#4

Сообщение ecoins » 12.12.2020{, 17:14}

Sancho писал(а):
12.12.2020{, 16:05}
Может пригодится.
Спасибо. Знаком со статьей и понимаю её содержание. Так мы обрабатываем массив символов, размещенных в PROGMEM.
А вот как просто извлечь байт? Можно конечно переписать в массив, но по ощущениям должен быть метод попроще.

aidar_i
Полковник
Сообщения: 1982
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 266
Откуда: Уфа
Имя: Айдар
Контактная информация:

Конвертация строки в массив byte, char

#5

Сообщение aidar_i » 12.12.2020{, 18:20}

ecoins писал(а):
12.12.2020{, 14:35}
Таким образом, задача подсчитать правильно длину строки с русскими символами осталась нерешенной. Пришлось как-то на "полу-костылях" решать проблему.
Может у Вас есть идеи или решение такой задачи?
Здесь смотрели?
Считает правильно.

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

Конвертация строки в массив byte, char

#6

Сообщение Dryundel » 12.12.2020{, 19:12}

ecoins писал(а):
12.12.2020{, 14:35}
Пробовал вытаскивать из строки побайтно, но явно такой функции не обнаружил.
Таким образом, задача подсчитать правильно длину строки с русскими символами осталась нерешенной.
ecoins, задача решается. в три строки. И даже для Ё и ё. На днях же выкладывал Длина строки RUS+ENG.
Неразрешенным остался только подсчет трех байтных символов, типа "№". Три дня ломал мозг. Не победил, сдался. :)
Пользовательские блоки на сайте FLPROG - BLOCK

ecoins
Подполковник
Сообщения: 1230
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 210
Откуда: Шатура
Имя: Энвер

Конвертация строки в массив byte, char

#7

Сообщение ecoins » 12.12.2020{, 20:23}

Dryundel писал(а):
12.12.2020{, 19:12}
ecoins, задача решается. в три строки. И даже для Ё и ё. На днях же выкладывал Длина строки RUS+ENG.
Спасибо, как раз не хватало дойти до конструкции const char * data - изящно и просто.
Переделаю у себя - в нашей библиотеке сделано несколько мудренее.

Аватара пользователя
nalnik
Подполковник
Сообщения: 1242
Зарегистрирован: 14.05.2016{, 17:12}
Репутация: 85
Откуда: Кисловодск
Имя: Александр

Конвертация строки в массив byte, char

#8

Сообщение nalnik » 12.12.2020{, 20:28}

ecoins писал(а):
12.12.2020{, 20:23}
Переделаю у себя ------- в нашей библиотеке ------- сделано несколько мудренее.
Веселый Вы человек!
Я хочу быть добрее, но люди сами нарываются.

Ответить

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