Я Java-разработчик, который пытается кодировать C++ в ограниченной среде Arduino. Исключения и динамические объекты недоступны или их следует избегать из-за ограничений памяти.
Моя задача: создать метод, который анализирует символьный буфер (шестнадцатеричный полубайт) и возвращает логическое значение, указывающее на успех, а также на фактический результат. Моя попытка до сих пор (не связанные вещи избегаются):
class Parser {
unsigned char buffer[SIZE];
unsigned char index;
void parse();
bool parseHexNibble(unsigned char &result);
};
void Parser::parse() {
unsigned char result = 0;
if (!parseHexNibble(result)) {
return;
}
// do some work with result
}
bool Parser::parseHexNibble(unsigned char &result) {
unsigned char chr = buffer[index];
if (chr >= '0' && chr <= '9') {
result = chr - '0';
}
else if (chr >= 'A' && chr <= 'F') {
result = chr - 'A' + 10;
}
else {
return false;
}
index++;
return true;
}
Будет ли это работать? Я не уверен, когда использовать *
и когда использовать &
. Есть ли лучшее решение?