二分法
static uint8_t findBattPercent(const uint16_t *table, uint16_t len, uint16_t voltage) { int left = 0, right = len - 1, mid = 0; if(voltage < table[left]) { return 0; } else if(voltage > table[right]) { return len; } while((left + 1) < right) { mid = left + (right - left) / 2; if(table[mid] < voltage) { left = mid; } else if(table[mid] > voltage) { right = mid; } else { return mid; } if(table[left] == voltage) { return left; } else if(table[right] == voltage) { return right; } } return left; }