getBytes()
Метод getBytes() копирует символы объекта String в массив byte — удобно для передачи данных через SPI, запись в EEPROM или отправки через Serial.write().
Полная статья
Описание
Метод getBytes() позволяет получить содержимое строки типа String в виде сырых байт — то есть скопировать символы строки в обычный массив типа byte. Это удобно, когда нужно передать строку побайтово: например, отправить данные по шине SPI, записать в EEPROM или сформировать пакет для последовательного порта.
Важно понимать: метод копирует не более len - 1 символов и всегда добавляет в конец нулевой байт (\0), чтобы буфер оставался корректной C-строкой. Если строка длиннее len - 1, содержимое будет обрезано.
Синтаксис
myString.getBytes(buf, len)
Параметры
myString: объект типаString, из которого копируются символы.buf: массив типаbyte, в который будут записаны символы строки. Массив должен быть объявлен заранее и иметь достаточный размер.len: размер буфераbufв байтах. Тип данных:unsigned int. Метод скопирует не болееlen - 1символов и добавит завершающий нуль.
Возвращает
Ничего.
Где применяется
- Передача строковых данных по SPI или I2C, где нужен доступ к отдельным байтам.
- Запись строки в EEPROM через функцию
EEPROM.write(), которая работает с байтами. - Формирование бинарного пакета для отправки через
Serial.write(). - Обработка строки посимвольно в алгоритмах, которые не работают с типом
Stringнапрямую.
Практические замечания
- Всегда объявляйте буфер с размером не меньше
myString.length() + 1, иначе строка будет обрезана. - Метод всегда записывает завершающий нулевой байт, поэтому полезная ёмкость буфера —
len - 1символов. - Если передать
len = 0, ничего не будет скопировано, и буфер останется нетронутым. - Не путайте
getBytes()сtoCharArray(): оба метода делают похожее, ноtoCharArray()работает с массивомchar, аgetBytes()— с массивомbyte. Для большинства ASCII-строк результат будет одинаковым. - После вызова
getBytes()содержимое буфера можно передавать в функции, ожидающиеuint8_t*илиbyte*, без дополнительного приведения типов.