HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- что это такое ? (https://hlfx.ru/forum/showthread.php?threadid=5956)
Отправлено илья2 03-03-2023 в 06:56:
что это такое ?
// Decode one character from a UTF-8 encoded string. Treats 6-byte CESU-8 sequences
// as a single character, as if they were a correctly-encoded 4-byte UTF-8 sequence.
C++ Source Code:
1 | int Q_UTF8ToUChar32( const char *pUTF8_, unsigned int &uValueOut, bool &bErrorOut ) |
3 | const unsigned char *pUTF8 = (const unsigned char*)pUTF8_; |
6 | unsigned int uValue = pUTF8[0]; |
7 | unsigned int uMinValue = 0; |
9 | // 0....... single byte |
11 | goto decodeFinishedNoCheck; |
13 | // Expecting at least a two-byte sequence with 0xC0 <= first <= 0xF7 (110...... and 11110...) |
14 | if( ( uValue - 0xC0u ) > 0x37u || ( pUTF8[1] & 0xC0 ) != 0x80 ) |
17 | uValue = ( uValue << 6 ) - ( 0xC0 << 6 ) + pUTF8[1] - 0x80; |
21 | // 110..... two-byte lead byte |
22 | if( !( uValue & ( 0x20 << 6 ) ) ) |
25 | // Expecting at least a three-byte sequence |
26 | if( ( pUTF8[2] & 0xC0 ) != 0x80 ) |
29 | uValue = ( uValue << 6 ) - ( 0x20 << 12 ) + pUTF8[2] - 0x80; |
33 | // 1110.... three-byte lead byte |
35 | if( uValue >= uMinValue && Q_IsValidUChar32( uValue ) ) |
37 | decodeFinishedNoCheck: |
47 | decodeFinishedMaybeCESU8: |
48 | // Do we have a full UTF-16 surrogate pair that's been UTF-8 encoded afterwards? |
49 | // That is, do we have 0xD800-0xDBFF followed by 0xDC00-0xDFFF? If so, decode it all. |
50 | if( ( uValue - 0xD800u ) < 0x400u && pUTF8[3] == 0xED && (unsigned char)( pUTF8[4] - 0xB0 ) < 0x10 && ( pUTF8[5] & 0xC0 ) == 0x80 ) |
52 | uValue = 0x10000 + ( ( uValue - 0xD800u ) << 10 ) + ( (unsigned char)( pUTF8[4] - 0xB0 ) << 6 ) + pUTF8[5] - 0x80; |
объясните для чего и зачем нужна эта функция ? и можно ли её удалить ?__________________
илья
Отправлено Дядя Миша 03-03-2023 в 07:07:
Удоляй смело )
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено FiEctro 03-03-2023 в 08:30:
Гугл перевод:
Цитата:
// Декодировать один символ из строки в кодировке UTF-8. Обрабатывает 6-байтовые последовательности CESU-8.
// как один символ, как если бы они были правильно закодированной 4-байтовой последовательностью UTF-8.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено hgrunt_2020 03-03-2023 в 12:41:
А зочем удалять?
__________________
И главное, Артём, помни: не ешь желтый снег!