add help to utf8_len

This commit is contained in:
chatlanin 2023-08-16 21:12:47 +03:00
parent 526530caf5
commit 9805cdf6cf

View File

@ -6,6 +6,12 @@
namespace hack::string
{
// подсчет кол-ва символов
// В шестнадцатеричной системе счисления, 0xC0 представляет собой число 192. В бинарной системе это 11000000.
// Это число используется как маска для проверки байта в UTF-8 последовательности. И проверка в коде использует битовую операцию "И" (&) с маской 0xC0, чтобы проверить, является ли текущий
// байт началом UTF-8 последовательности. В UTF-8 первый байт символа, который не является частью
// многобайтовой последовательности, должен начинаться с битов 0 или 110 (в шестнадцатеричной системе это 0x00 или 0xC0).
// Проверка (c & 0xC0) != 0x80 используется для определения, является ли текущий байт продолжением UTF-8 многобайтовой последовательности.
// Валидные байты продолжения в UTF-8 должны начинаться с бита 10 (в бинарной системе это 0x80 или 10000000).
inline std::size_t utf8_len(const std::string& s)
{
std::size_t length = 0;
@ -21,3 +27,4 @@ namespace hack::string
return length;
}
}