Как объединить два значения в строку?
Я перепробовал все предполагаемые решения конкретной ошибки, вставленные в Google, которые смог найти на каждом форуме, включая этот, и независимо от предполагаемого решения, я либо получу ошибку о unsigned int to char*, либо ошибка ниже или неверные указатели.
Почему эта платформа настолько недружелюбна в преобразовании типов данных? Как будто создатели никогда не хотели, чтобы какие-либо типы данных могли конвертироваться.
Вот мой код, который явно бесполезен:
char* DeviceName = "Device-" + ESP.getChipId();
wifiManager.autoConnect(DeviceName);
Ошибка: недопустимое преобразование из «const char*» в «char*» [-fpermissive] char* DeviceName = "Device-" + ESP.getChipId();
Затем я попытался использовать указатели, но понятия не имею, что делаю, и продолжаю получать ошибки недопустимого указателя и/или ошибки недопустимого преобразования.
1 ответ
Лучший ответ:
Вы можете использовать функцию c sprintf(, , ...) Массив символов должен быть достаточно большим, чтобы вместить ваш текст плюс ноль для завершения строки.
#include <Arduino.h>
void setup() {
Serial.begin(115200);
delay(1000);
char out[20];
sprintf(out, "Device-%08X",ESP.getChipId()); // %08X\n форматирует шестнадцатеричный код и дополняет его нулями.
Serial.println(out);
}
void loop() {}
Выход:
Device-005D4D9D
Спасибо! Я попробовал это, и он выводит числовой идентификатор, но мне нужен строковый идентификатор. Идентификатор чипа ESP8266 = 005D4D9D <- это должен быть идентификатор... Device-6114717 <- здесь не числовое преобразование, @Ethan Aaron Vandal
Добро пожаловать - полезный пользователь изменил строку формата, чтобы вместо этого выводить 8 шестнадцатеричных цифр, поскольку это то, что вы, похоже, ищете., @SEngstrom
Учиться – это хорошо. Чтобы удалить лишние символы, вы также можете использовать sprintf(out, "Device-%X",ESP.getChipId());, @Ethan Aaron Vandal
- RtcDateTime' не называет тип
- Считывание данных нескольких датчиков из текстового файла, расположенного на SD-карте в Arduino/ESP32
- Не могу скомпилировать .ino с помощью библиотеки ArduinoJson
- Проблемы с Serial.read()
- Надо ли использовать C или C++ для реализации чистого кода Arduino?
- Int массив, переданный через функцию, имеет неправильные значения только после нескольких проходов
- C++ против языка Arduino?
- устаревшее преобразование из строковой константы в 'char*'
Подсказка: попробуйте использовать sprintf(). http://www.cplusplus.com/reference/cstdio/sprintf/, @Mikael Patel
буфер символов [50]; char DeviceName = sprintf(buffer, "Device-%d", ESP.getChipId()); wifiManager.autoConnect (ИмяУстройства);, @Ethan Aaron Vandal
ошибка: недопустимое преобразование из 'char' в 'const char*' [-fpermissive] wifiManager.autoConnect (ИмяУстройства);, @Ethan Aaron Vandal