Застрял на элементарном. Описана логика преобразований: Код (C++): String S; unsigned char x = 246; // т.е.число -10 char c; c = x; // теперь тут -10 S.replace( "<!--M-->", String(c, DEC) ); в итоге в S число 246, а нужно -10. Пробовал разные варианты: (char)c, менял "char c" на "int c" - не хочет! Может в ESP8266 как-то по другому работают преобразования?
либо конвертнуть вручную, либо по указателю. Я так подозреваю, что компилятор ругнулся и выкинул вообще нафик переменную c.
в ручную не вариант. В Visual C++ конвертирует правильно: c = x; // теперь тут -10 в том то и дело, что не ругнулся!
Вы это сами придумали или сказал кто? Не пробовали её (S) напечатать и посмотреть что в ней на самом деле? По мне это "типичный случай так-называемого вранья". Нету в S никакого 246. Или Вы нам подсунули не тот скетч, который запускали.
Ты не кипятись, а признай, что действительно подсунул совсем не тот скетч в котором проблема (видимо, чтобы поиздеваться). В том скетче, что ты привёл в первом посте, S не получает никакого значения - пустая строка. А значит в ней после replace именно пустая строка и останется. И никакого 246 там не будет. Ты возьми свой скетч (из первого поста), запусти, убедись, что я прав, извинись за зверскую рожу, тогда я, возможно, тебе и помогу.
Ну да, согласен. Отбивает всякое желание спрашивать. Так по умолчанию char и есть - signed char. Или ошибаюсь?
Ну, что запустил скетч из первого поста? Убедился, что там нет никакой 246, а есть только пустая строка?