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

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

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

#1

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

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

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

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

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

#2

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

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

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

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

#3

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

ecoins писал(а):
12.12.2020{, 14:35}
Может у Вас есть идеи или решение такой задачи?
Может пригодится.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

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

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

#4

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

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

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

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

#5

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

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

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

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

#6

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

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

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

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

#7

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

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

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

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

#8

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

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

Ответить

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