code: private int getByte(int position) {
      if (position + 1 >= length) {
        throw new IllegalStateException("Malformed DN: " + dn);
      }
  
      int b1, b2;
  
      b1 = chars[position];
      if (b1 >= '0' && b1 <= '9') {
        b1 = b1 - '0';
      } else if (b1 >= 'a' && b1 <= 'f') {
        b1 = b1 - 87; // 87 = 'a' - 10
      } else if (b1 >= 'A' && b1 <= 'F') {
        b1 = b1 - 55; // 55 = 'A' - 10
      } else {
        throw new IllegalStateException("Malformed DN: " + dn);
      }
  
      b2 = chars[position + 1];
      if (b2 >= '0' && b2 <= '9') {
        b2 = b2 - '0';
      } else if (b2 >= 'a' && b2 <= 'f') {
        b2 = b2 - 87; // 87 = 'a' - 10
      } else if (b2 >= 'A' && b2 <= 'F') {
        b2 = b2 - 55; // 55 = 'A' - 10
      } else {
        throw new IllegalStateException("Malformed DN: " + dn);
      }
  
      return (b1 << 4) + b2;
    }
docs: / "a" / "b" / "c" / "d" / "e" / "f"