purebasic.info

PureBasic forum
Текущее время: Сб дек 16, 2017 11:29 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: Пн мар 20, 2017 12:04 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 545
Благодарил (а): 2 раз.
Поблагодарили: 30 раз.
Пункты репутации: 9
Собственно функция написанная мной для определения в тексте utf_8,максимального количества байт для одного символа.
Так как символ в этой кодировки может иметь различное число байт для своего значения.
Входящий аргумент указатель на строку utf-8,выходящее значение сколько байт занимает самый длинный закодированный символ в этой строке(максимальный найденный символ который может быть закодирован до 8 байт)
PS:Типа можно загрузить китайскую страничку и понять сколько байт может занимать некий символ :D
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
 
ProcedureCDLL.i MAXBAIT_UTF8(*s)
;(©) Автор под псевдонимом Сергейчик.
  !push esi
  !mov esi,[esp+8]
  !xor eax,eax
  !uu:
 !cmp byte[esi],0h
  !jz ecssit
  !cmp byte[esi],127
  !ja gg
  !cmp eax,1
  !ja yy
  !mov eax,1
  !yy:
 !add esi,1
  ;Debug 1
  !jmp uu
  ;
  !gg:
 !cmp byte[esi],223
  !ja hh
  ;2
  !cmp eax,2
  !ja kk
  !mov eax,2
  !kk:
 !add esi,2
  ;Debug 2
  !jmp uu
  !
  ;
  !hh:;>3
  !cmp byte[esi],239
  !ja ddh
  ;3
  !cmp eax,3
  !ja kw
  !mov eax,3
  !kw:
 !add esi,3
  ;Debug 3
  !jmp uu
  ;
  !ddh:
 !cmp byte[esi],247
  !ja ffm
  ;4
  !cmp eax,4
  !ja kr
  !mov eax,4
  !kr:
 !add esi,4
  ;Debug 4
  !jmp uu
  ;
  !ffm:
 !cmp byte[esi],251
  !ja ffd
  ;5
  !cmp eax,5
  !ja krt
  !mov eax,5
  !krt:
 !add esi,5
  ;Debug 5
  !jmp uu
  ;
  !ffd:
 !cmp byte[esi],253
  !ja ffdt
  ;6
  !cmp eax,6
  !ja krtt
  !mov eax,6
  !krtt:
 !add esi,6
  !jmp uu
  ;
  !ffdt:
 !cmp byte[esi],254
  !ja ffdtr
  ;7
  !cmp eax,7
  !ja krttr
  !mov eax,7
  !krttr:
 !add esi,7
  !jmp uu
  ;
  !ffdtr:
 ;8
  !cmp eax,8
  !ja krttrg
  !mov eax,8
  !krttrg:
 !add esi,8
  !jmp uu
  ;
  !ecssit:
 !pop esi
  ;
  !retn 4
  ;ProcedureReturn
EndProcedure
 



Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB