我是一名 Java 开发人员,试图在有限的 Arduino 环境中编写 C++ 代码。由于内存限制,异常和动态对象不可用或必须避免。
我的任务是创建一个解析字符缓冲区(十六进制半字节)并返回布尔值以指示成功以及实际结果的方法。到目前为止我的尝试(避免了不相关的东西):
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;
}
这行得通吗?我不确定何时使用*
以及何时使用&
. 有更好的解决方案吗?