Главная chevron_right Функции chevron_right Символы chevron_right isHexadecimalDigit()

isHexadecimalDigit()

isHexadecimalDigit() проверяет, является ли символ допустимой шестнадцатеричной цифрой — 09, AF или af — и возвращает true или false.

Полная статья

Описание

Функция isHexadecimalDigit() проверяет, входит ли переданный символ в набор допустимых шестнадцатеричных цифр: цифры 09, а также буквы AF и af. Если символ принадлежит этому набору, функция возвращает 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.

Полезные материалы