HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > что это такое ?
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



Question что это такое ?

// 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 )
2
{
3
  const unsigned char *pUTF8 = (const unsigned char*)pUTF8_;
4
 
5
  int nBytes = 1;
6
  unsigned int uValue = pUTF8[0];
7
  unsigned int uMinValue = 0;
8
 
9
  // 0....... single byte
10
  if( uValue < 0x80 )
11
    goto decodeFinishedNoCheck;
12
 
13
  // Expecting at least a two-byte sequence with 0xC0 <= first <= 0xF7 (110...... and 11110...)
14
  if( ( uValue - 0xC0u ) > 0x37u || ( pUTF8[1] & 0xC0 ) != 0x80 )
15
    goto decodeError;
16
 
17
  uValue = ( uValue << 6 ) - ( 0xC0 << 6 ) + pUTF8[1] - 0x80;
18
  nBytes = 2;
19
  uMinValue = 0x80;
20
 
21
  // 110..... two-byte lead byte
22
  if( !( uValue & ( 0x20 << 6 ) ) )
23
    goto decodeFinished;
24
 
25
  // Expecting at least a three-byte sequence
26
  if( ( pUTF8[2] & 0xC0 ) != 0x80 )
27
    goto decodeError;
28
 
29
  uValue = ( uValue << 6 ) - ( 0x20 << 12 ) + pUTF8[2] - 0x80;
30
  nBytes = 3;
31
  uMinValue = 0x800;
32
 
33
  // 1110.... three-byte lead byte
34
decodeFinished:
35
  if( uValue >= uMinValue && Q_IsValidUChar32( uValue ) )
36
  {
37
  decodeFinishedNoCheck:
38
    uValueOut = uValue;
39
    bErrorOut = false;
40
    return nBytes;
41
  }
42
decodeError:
43
  uValueOut = '?';
44
  bErrorOut = true;
45
  return nBytes;
46
 
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 )
51
  {
52
    uValue = 0x10000 + ( ( uValue - 0xD800u ) << 10 ) + ( (unsigned char)( pUTF8[4] - 0xB0 ) << 6 ) + pUTF8[5] - 0x80;
53
    nBytes = 6;
54
    uMinValue = 0x10000;
55
  }
56
  goto decodeFinished;
57
}

объясните для чего и зачем нужна эта функция ? и можно ли её удалить ?

__________________
илья

Отредактировано илья2 03-03-2023 в 06:58

Сообщить модератору | | IP: Записан
Сообщение: 213163

Старое сообщение 03-03-2023 06:56
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32202
Нанёс повреждений: 392 ед.

Рейтинг



Удоляй смело )

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 213164

Старое сообщение 03-03-2023 07:07
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12893
Возраст: 32

Рейтинг



Гугл перевод:

Цитата:
// Декодировать один символ из строки в кодировке UTF-8. Обрабатывает 6-байтовые последовательности CESU-8.
// как один символ, как если бы они были правильно закодированной 4-байтовой последовательностью UTF-8.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Сообщить модератору | | IP: Записан
Сообщение: 213165

Старое сообщение 03-03-2023 08:30
- За что?
hgrunt_2020
учусь методом тыка,проб и ошибок

Дата регистрации: Aug 2021
Проживает: Московское метро
Сообщений: 253
Возраст: 17

Рейтинг



А зочем удалять?

__________________
И главное, Артём, помни: не ешь желтый снег!

Сообщить модератору | | IP: Записан
Сообщение: 213178

Старое сообщение 03-03-2023 12:41
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 03:53. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > что это такое ?
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024