[Snippet] Ascii

Scripts

14 years
edited 8 years
Ascii - your resource for getting the ordinal value of a char or the char value of an integer.

Code (jass) Select
1
2
library Ascii /* v1.1.0.0         Nestharus/Bribe
3
************************************************************************************
4
*
5
*   function Char2Ascii takes string s returns integer
6
*       integer ascii = Char2Ascii("F")
7
*
8
*   function Ascii2Char takes integer a returns string
9
*       string char = Ascii2Char('F')
10
*
11
*   function A2S takes integer a returns string
12
*       string rawcode = A2S('CODE')
13
*
14
*   function S2A takes string s returns integer
15
*       integer rawcode = S2A("CODE")
16
*
17
************************************************************************************/
18
    globals
19
        private integer array i //hash
20
        private integer array h //hash2
21
        private integer array y //hash3
22
        private string array c  //char
23
    endglobals
24
    function Char2Ascii takes string p returns integer
25
        local integer z = i[StringHash(p)/0x1F0748+0x40D]
26
        if (c[z] != p) then
27
            if (c[z - 32] != p) then
28
                if (c[h[z]] != p) then
29
                    if (c[y[z]] != p) then
30
                        if (c[83] != p) then
31
                            debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60,"ASCII ERROR: INVALID CHARACTER: " + p)
32
                            return 0
33
                        endif
34
                        return 83
35
                    endif
36
                    return y[z]
37
                endif
38
                return h[z]
39
            endif
40
            return z - 32
41
        endif
42
        return z
43
    endfunction
44
    function Ascii2Char takes integer a returns string
45
        return c[a]
46
    endfunction
47
    function A2S takes integer a returns string
48
        local string s=""
49
        loop
50
            set s=c[a-a/256*256]+s
51
            set a=a/256
52
            exitwhen 0==a
53
        endloop
54
        return s
55
    endfunction
56
    function S2A takes string s returns integer
57
        local integer a=0
58
        local integer l=StringLength(s)
59
        local integer j=0
60
        local string m
61
        local integer h
62
        loop
63
            exitwhen j==l
64
            set a = a*256 + Char2Ascii(SubString(s,j,j+1))
65
            set j=j+1
66
        endloop
67
        return a
68
    endfunction
69
    private module Init
70
        private static method onInit takes nothing returns nothing
71
            set i[966] = 8
72
            set i[1110] = 9
73
            set i[1621] = 10
74
            set i[1375] = 12
75
            set i[447] = 13
76
            set i[233] = 32
77
            set i[2014] = 33
78
            set i[1348] = 34
79
            set i[1038] = 35
80
            set i[1299] = 36
81
            set i[1018] = 37
82
            set i[1312] = 38
83
            set i[341] = 39
84
            set i[939] = 40
85
            set i[969] = 41
86
            set i[952] = 42
87
            set i[2007] = 43
88
            set i[1415] = 44
89
            set i[2020] = 45
90
            set i[904] = 46
91
            set i[1941] = 47
92
            set i[918] = 48
93
            set i[1593] = 49
94
            set i[719] = 50
95
            set i[617] = 51
96
            set i[703] = 52
97
            set i[573] = 53
98
            set i[707] = 54
99
            set i[1208] = 55
100
            set i[106] = 56
101
            set i[312] = 57
102
            set i[124] = 58
103
            set i[1176] = 59
104
            set i[74] = 60
105
            set i[1206] = 61
106
            set i[86] = 62
107
            set i[340] = 63
108
            set i[35] = 64
109
            set i[257] = 65
110
            set i[213] = 66
111
            set i[271] = 67
112
            set i[219] = 68
113
            set i[1330] = 69
114
            set i[1425] = 70
115
            set i[1311] = 71
116
            set i[238] = 72
117
            set i[1349] = 73
118
            set i[244] = 74
119
            set i[1350] = 75
120
            set i[205] = 76
121
            set i[1392] = 77
122
            set i[1378] = 78
123
            set i[1432] = 79
124
            set i[1455] = 80
125
            set i[1454] = 81
126
            set i[1431] = 82
127
            set i[1409] = 83
128
            set i[1442] = 84
129
            set i[534] = 85
130
            set i[1500] = 86
131
            set i[771] = 87
132
            set i[324] = 88
133
            set i[1021] = 89
134
            set i[73] = 90
135
            set i[1265] = 91
136
            set i[1941] = 92
137
            set i[1671] = 93
138
            set i[1451] = 94
139
            set i[1952] = 95
140
            set i[252] = 96
141
            set i[257] = 97
142
            set i[213] = 98
143
            set i[271] = 99
144
            set i[219] = 100
145
            set i[1330] = 101
146
            set i[1425] = 102
147
            set i[1311] = 103
148
            set i[238] = 104
149
            set i[1349] = 105
150
            set i[244] = 106
151
            set i[1350] = 107
152
            set i[205] = 108
153
            set i[1392] = 109
154
            set i[1378] = 110
155
            set i[1432] = 111
156
            set i[1455] = 112
157
            set i[1454] = 113
158
            set i[1431] = 114
159
            set i[1409] = 115
160
            set i[1442] = 116
161
            set i[534] = 117
162
            set i[1500] = 118
163
            set i[771] = 119
164
            set i[324] = 120
165
            set i[1021] = 121
166
            set i[73] = 122
167
            set i[868] = 123
168
            set i[1254] = 124
169
            set i[588] = 125
170
            set i[93] = 126
171
            set i[316] = 161
172
            set i[779] = 162
173
            set i[725] = 163
174
            set i[287] = 164
175
            set i[212] = 165
176
            set i[7] = 166
177
            set i[29] = 167
178
            set i[1958] = 168
179
            set i[1009] = 169
180
            set i[1580] = 170
181
            set i[1778] = 171
182
            set i[103] = 172
183
            set i[400] = 174
184
            set i[1904] = 175
185
            set i[135] = 176
186
            set i[1283] = 177
187
            set i[469] = 178
188
            set i[363] = 179
189
            set i[550] = 180
190
            set i[1831] = 181
191
            set i[1308] = 182
192
            set i[1234] = 183
193
            set i[1017] = 184
194
            set i[1093] = 185
195
            set i[1577] = 186
196
            set i[606] = 187
197
            set i[1585] = 188
198
            set i[1318] = 189
199
            set i[980] = 190
200
            set i[1699] = 191
201
            set i[1292] = 192
202
            set i[477] = 193
203
            set i[709] = 194
204
            set i[1600] = 195
205
            set i[2092] = 196
206
            set i[50] = 197
207
            set i[546] = 198
208
            set i[408] = 199
209
            set i[853] = 200
210
            set i[205] = 201
211
            set i[411] = 202
212
            set i[1311] = 203
213
            set i[1422] = 204
214
            set i[1808] = 205
215
            set i[457] = 206
216
            set i[1280] = 207
217
            set i[614] = 208
218
            set i[1037] = 209
219
            set i[237] = 210
220
            set i[1409] = 211
221
            set i[1023] = 212
222
            set i[1361] = 213
223
            set i[695] = 214
224
            set i[161] = 215
225
            set i[1645] = 216
226
            set i[1822] = 217
227
            set i[644] = 218
228
            set i[1395] = 219
229
            set i[677] = 220
230
            set i[1677] = 221
231
            set i[881] = 222
232
            set i[861] = 223
233
            set i[1408] = 224
234
            set i[1864] = 225
235
            set i[1467] = 226
236
            set i[1819] = 227
237
            set i[1971] = 228
238
            set i[949] = 229
239
            set i[774] = 230
240
            set i[1828] = 231
241
            set i[865] = 232
242
            set i[699] = 233
243
            set i[786] = 234
244
            set i[1806] = 235
245
            set i[1286] = 236
246
            set i[1128] = 237
247
            set i[1490] = 238
248
            set i[1720] = 239
249
            set i[1817] = 240
250
            set i[729] = 241
251
            set i[1191] = 242
252
            set i[1164] = 243
253
            set i[413] = 244
254
            set i[349] = 245
255
            set i[1409] = 246
256
            set i[660] = 247
257
            set i[2016] = 248
258
            set i[1087] = 249
259
            set i[1497] = 250
260
            set i[753] = 251
261
            set i[1579] = 252
262
            set i[1456] = 253
263
            set i[606] = 254
264
            set i[1625] = 255
265
            set h[92] = 47
266
            set h[201] = 108
267
            set h[201] = 76
268
            set h[203] = 103
269
            set h[203] = 71
270
            set h[246] = 115
271
            set h[246] = 83
272
            set h[246] = 211
273
            set h[254] = 187
274
            set y[201] = 108
275
            set y[203] = 103
276
            set y[246] = 115
277
278
            set c[8]="\b"
279
            set c[9]="\t"
280
            set c[10]="\n"
281
            set c[12]="\f"
282
            set c[13]="\r"
283
            set c[32]=" "
284
            set c[33]="!"
285
            set c[34]="\""
286
            set c[35]="#"
287
            set c[36]="$"
288
            set c[37]="%"
289
            set c[38]="&"
290
            set c[39]="'"
291
            set c[40]="("
292
            set c[41]=")"
293
            set c[42]="*"
294
            set c[43]="+"
295
            set c[44]=","
296
            set c[45]="-"
297
            set c[46]="."
298
            set c[47]="/"
299
            set c[48]="0"
300
            set c[49]="1"
301
            set c[50]="2"
302
            set c[51]="3"
303
            set c[52]="4"
304
            set c[53]="5"
305
            set c[54]="6"
306
            set c[55]="7"
307
            set c[56]="8"
308
            set c[57]="9"
309
            set c[58]=":"
310
            set c[59]=";"
311
            set c[60]="<"
312
            set c[61]="="
313
            set c[62]=">"
314
            set c[63]="?"
315
            set c[64]="@"
316
            set c[65]="A"
317
            set c[66]="B"
318
            set c[67]="C"
319
            set c[68]="D"
320
            set c[69]="E"
321
            set c[70]="F"
322
            set c[71]="G"
323
            set c[72]="H"
324
            set c[73]="I"
325
            set c[74]="J"
326
            set c[75]="K"
327
            set c[76]="L"
328
            set c[77]="M"
329
            set c[78]="N"
330
            set c[79]="O"
331
            set c[80]="P"
332
            set c[81]="Q"
333
            set c[82]="R"
334
            set c[83]="S"
335
            set c[84]="T"
336
            set c[85]="U"
337
            set c[86]="V"
338
            set c[87]="W"
339
            set c[88]="X"
340
            set c[89]="Y"
341
            set c[90]="Z"
342
            set c[91]="["
343
            set c[92]="\\"
344
            set c[93]="]"
345
            set c[94]="^"
346
            set c[95]="_"
347
            set c[96]="`"
348
            set c[97]="a"
349
            set c[98]="b"
350
            set c[99]="c"
351
            set c[100]="d"
352
            set c[101]="e"
353
            set c[102]="f"
354
            set c[103]="g"
355
            set c[104]="h"
356
            set c[105]="i"
357
            set c[106]="j"
358
            set c[107]="k"
359
            set c[108]="l"
360
            set c[109]="m"
361
            set c[110]="n"
362
            set c[111]="o"
363
            set c[112]="p"
364
            set c[113]="q"
365
            set c[114]="r"
366
            set c[115]="s"
367
            set c[116]="t"
368
            set c[117]="u"
369
            set c[118]="v"
370
            set c[119]="w"
371
            set c[120]="x"
372
            set c[121]="y"
373
            set c[122]="z"
374
            set c[123]="{"
375
            set c[124]="|"
376
            set c[125]="}"
377
            set c[126]="~"
378
            set c[128] = ""
379
            set c[130] = ","
380
            set c[131] = "ƒ"
381
            set c[132] = ",,"
382
            set c[133] = "..."
383
            set c[134] = ""
384
            set c[135] = ""
385
            set c[136] = "ˆ"
386
            set c[137] = ""
387
            set c[138] = "Š"
388
            set c[139] = ""
389
            set c[140] = "Œ"
390
            set c[142] = "Ž"
391
            set c[145] = "'"
392
            set c[146] = "'"
393
            set c[147] = """
394
            set c[148] = """
395
            set c[149] = ""
396
            set c[150] = ""
397
            set c[151] = ""
398
            set c[152] = "˜"
399
            set c[153] = ""
400
            set c[154] = "š"
401
            set c[155] = ""
402
            set c[156] = "œ"
403
            set c[158] = "ž"
404
            set c[159] = "Ÿ"
405
            set c[160] = " "
406
            set c[161] = "¡"
407
            set c[162] = "¢"
408
            set c[163] = "£"
409
            set c[164] = "¤"
410
            set c[165] = "¥"
411
            set c[166] = "¦"
412
            set c[167] = "§"
413
            set c[168] = "¨"
414
            set c[169] = "©"
415
            set c[170] = "ª"
416
            set c[171] = "«"
417
            set c[172] = "¬"
418
            set c[174] = "®"
419
            set c[175] = "¯"
420
            set c[176] = "°"
421
            set c[177] = "±"
422
            set c[178] = "²"
423
            set c[179] = "³"
424
            set c[180] = "´"
425
            set c[181] = "µ"
426
            set c[182] = ""
427
            set c[183] = "·"
428
            set c[184] = "¸"
429
            set c[185] = "¹"
430
            set c[186] = "º"
431
            set c[187] = "»"
432
            set c[188] = "¼"
433
            set c[189] = "½"
434
            set c[190] = "¾"
435
            set c[191] = "¿"
436
            set c[192] = "À"
437
            set c[193] = "Á"
438
            set c[194] = "Â"
439
            set c[195] = "Ã"
440
            set c[196] = "Ä"
441
            set c[197] = "Å"
442
            set c[198] = "Æ"
443
            set c[199] = "Ç"
444
            set c[200] = "È"
445
            set c[201] = "É"
446
            set c[202] = "Ê"
447
            set c[203] = "Ë"
448
            set c[204] = "Ì"
449
            set c[205] = "Í"
450
            set c[206] = "Î"
451
            set c[207] = "Ï"
452
            set c[208] = "Ð"
453
            set c[209] = "Ñ"
454
            set c[210] = "Ò"
455
            set c[211] = "Ó"
456
            set c[212] = "Ô"
457
            set c[213] = "Õ"
458
            set c[214] = "Ö"
459
            set c[215] = "×"
460
            set c[216] = "Ø"
461
            set c[217] = "Ù"
462
            set c[218] = "Ú"
463
            set c[219] = "Û"
464
            set c[220] = "Ü"
465
            set c[221] = "Ý"
466
            set c[222] = "Þ"
467
            set c[223] = "ß"
468
            set c[224] = "à"
469
            set c[225] = "á"
470
            set c[226] = "â"
471
            set c[227] = "ã"
472
            set c[228] = "ä"
473
            set c[229] = "å"
474
            set c[230] = "æ"
475
            set c[231] = "ç"
476
            set c[232] = "è"
477
            set c[233] = "é"
478
            set c[234] = "ê"
479
            set c[235] = "ë"
480
            set c[236] = "ì"
481
            set c[237] = "í"
482
            set c[238] = "î"
483
            set c[239] = "ï"
484
            set c[240] = "ð"
485
            set c[241] = "ñ"
486
            set c[242] = "ò"
487
            set c[243] = "ó"
488
            set c[244] = "ô"
489
            set c[245] = "õ"
490
            set c[246] = "ö"
491
            set c[247] = "÷"
492
            set c[248] = "ø"
493
            set c[249] = "ù"
494
            set c[250] = "ú"
495
            set c[251] = "û"
496
            set c[252] = "ü"
497
            set c[253] = "ý"
498
            set c[254] = "þ"
499
            set c[255] = "ÿ"
500
        endmethod
501
    endmodule
502
    private struct Inits extends array
503
        implement Init
504
    endstruct
505
endlibrary
506