Всем привет! Поделитесь пожалуйста примерами парсинга такой строки из Serial FF:A7:0:7:92:F6:75:F6: в байтовый массив , в каждой ячейке массива должно получится шестнадцатеричное число такого вида - 0x87.
читаю в строку Код (C++): BUF= Serial.readString(); потом пытаюсь пихать это в массив с преобразованием Код (C++): keyID[0] = BUF [0,HEX]; keyID[1] = BUF [1,HEX]; keyID[2] = BUF [3,HEX];keyID[3] = BUF [4,HEX]; получается на выходе бред
а кто эту строку посылает? Может сразу вместо, например, строки "FF" - посылать шестнадцитиричное 0xFF - парсить будет в разы проще - а вот это вам нафик не нужно
Сильно не тестировал, тестируй сам. Код (C++): char ParsedString[] = "FF:A7:0:7:92:F6:75:F6"; uint8_t ParsedIndex = 0; int ArraySizeNeed(const char *AArray) { int result = 0; char ch; bool digitflag = false; while ((ch = *AArray++)) { if (not isHexadecimalDigit(ch)) { digitflag = false; continue; } if (digitflag) continue; digitflag = true; result++; } return result; } uint8_t getDecDigit(char AHexChar) { AHexChar = toUpperCase(AHexChar); if ((AHexChar >= '0') && (AHexChar <= '9')) return AHexChar - '0'; return 10 + AHexChar - 'A'; } uint8_t getNextNumber(void) { char ch; uint8_t result = 0; while (true) { ch = ParsedString[ParsedIndex++]; if (not isHexadecimalDigit(ch)) break; result = (result << 4) | getDecDigit(ch); } return result; } void setup() { Serial.begin(115200); Serial << "Program started\n"; delay(500); int ArraySize = ArraySizeNeed(ParsedString); Serial << "Array Size Need = " << ArraySize << eoln; uint8_t *ReceiveArray = new uint8_t[ArraySize]; ParsedIndex = 0; for (int i = 0; i < ArraySize; i++) { ReceiveArray[i] = getNextNumber(); } for (int i = 0; i < ArraySize; i++) { Serial.print("0x"); Serial.print(ReceiveArray[i], HEX); Serial.print(' '); } Serial.println(); delete[] ReceiveArray; }
дядьВить, а если завтра у него вместо дваиточия чонить другое появица? типа "FF-A7-0-7-92-F6-75-F6" или "FF.A7.0.7.92.F6.75.F6" Мой код это правильно обработает (я им как раз IP-шники и выхватываю) а sscanf нада переписывать.
Код перестанет работать - ну может это и хорошо? У ТС появится шанс научится что-то делать самому, а не клянчить в инете - хотя бы шаблон в sscanf с двоеточий на тире переписать Или думаешь не осилит?