Неверное преобразование String
- Войдите на сайт для отправки комментариев
Пт, 01/09/2017 - 12:52
Доброго времени.
String sres = "499602D2";
unsigned long tt[4];
int z = 0;
Serial.println("sres: " + sres);
for (int i = 0; i < (sres.length() / 2); i++) {
tt[i] = long(sres.substring(z, z + 2).toInt());
Serial.print(sres.substring(z, z + 2));
Serial.print("->");
Serial.println(tt[i]);
z += 2;
}
Ожидаемый результат:
sres: 499602D2
49->49
96->96
02->2
D2->D2
Фактический результат:
sres: 499602D2
49->49
96->96
02->2
D2->0
Где я косячу?
А Вас не смущает, что "D" не является десятичной цифрой?
Уже смущает.
:)
Решение моей "проблемы":
String sres = "499602D2"; unsigned long tt; tt = strtoul(sres.c_str(), NULL, 16); Serial.print("sres: " + sres); Serial.print("->"); Serial.print(tt); === sres: 499602D2->1234567890Ну, решение, значит решение, никто ж не знает в чём Ваша проблема и что именно Вы делаете.
Хочу только заметить, что в первом посте Вы пытались печатать полученную информацию побайтно, а сейчас - едины длинным числом. Если Вам всё равно, значит - решение.