isHexadecimalDigit()
isHexadecimalDigit() проверяет, является ли символ допустимой шестнадцатеричной цифрой — 0–9, A–F или a–f — и возвращает true или false.
Полная статья
Описание
Функция isHexadecimalDigit() проверяет, входит ли переданный символ в набор допустимых шестнадцатеричных цифр: цифры 0–9, а также буквы A–F и a–f. Если символ принадлежит этому набору, функция возвращает true.
Это удобно, когда нужно разобрать строку, содержащую шестнадцатеричные данные, — например, цветовой код #FF8800, MAC-адрес или UUID — и убедиться, что каждый символ корректен перед дальнейшей обработкой.
Синтаксис
isHexadecimalDigit(thisChar)
Параметры
thisChar: символ, который нужно проверить. Тип данных: char.
Возвращает
Функция возвращает true, если символ является шестнадцатеричной цифрой, и false в противном случае.
Пример кода
char myChar = 'F'; // проверка с 'G' — не шестнадцатеричная цифра
void setup() {
Serial.begin(9600);
if (isHexadecimalDigit(myChar)) { // проверяет, является ли myChar шестнадцатеричной цифрой
Serial.println("The character is an hexadecimal digit");
} else {
Serial.println("The character is not an hexadecimal digit");
}
}
void loop() {
}
Где применяется
- Разбор цветовых кодов RGB — проверка символов строки вида
"FF8800"перед преобразованием в числа. - Валидация пользовательского ввода — если пользователь вводит данные через Serial Monitor и ожидается шестнадцатеричное значение, можно отфильтровать некорректные символы до обработки.
- Чтение HEX-файлов — при разборе Intel HEX или аналогичных форматов каждый байт данных представлен двумя шестнадцатеричными символами.
- Парсинг сетевых адресов — проверка символов MAC-адреса или IPv6-адреса.
Практические замечания
- Функция принимает как заглавные, так и строчные буквы:
'A'–'F'и'a'–'f'— оба варианта вернутtrue. - Символы-разделители, часто встречающиеся в HEX-строках — двоеточие
':', дефис'-', пробел — не являются шестнадцатеричными цифрами, поэтому функция вернёт для нихfalse. Учитывайте это при разборе строк вроде"DE:AD:BE:EF". - Если вы обрабатываете строку посимвольно, удобно использовать
isHexadecimalDigit()в цикле, пропуская или отвергая недопустимые символы. - Функция не преобразует символ в число — она только проверяет принадлежность к допустимому набору. Для самого преобразования используйте
strtol()или ручной расчёт через вычитание'0'или'A'. - Результат зависит от значения символа в таблице ASCII, поэтому передача отрицательного значения (например, расширенных символов с кодом выше 127) может дать непредсказуемый результат на некоторых платформах — убедитесь, что входные данные находятся в диапазоне стандартного ASCII.