comparison src/u8tbl.c @ 6368:8ddd6d5dc480

<oerjan> ` mv u8tbl bin; mv u8tbl.c src
author HackBot
date Thu, 10 Dec 2015 02:48:22 +0000
parents u8tbl.c@8e6c7372226d
children
comparison
equal deleted inserted replaced
6367:5cc703dfcdfa 6368:8ddd6d5dc480
1 #include "stdio.h"
2 #include "stdlib.h"
3
4 char *int2u8(unsigned U){
5 static char out[7];
6 int i=0;
7 if(U<=0x80)out[i++]=U;
8 else if(U<0x800){
9 out[i++]=(U>>6|0xC0);
10 out[i++]=(U&0x3f|0x80);
11 }else if(U<=0x10000){
12 out[i++]=(U>>12|0xE0);
13 out[i++]=(U>>6&0x3f|0x80);
14 out[i++]=(U&0x3f|0x80);
15 }else if(U<=0x200000){
16 out[i++]=(U>>18|0xF0);
17 out[i++]=(U>>12&0x3f|0x80);
18 out[i++]=(U>>6&0x3f|0x80);
19 out[i++]=(U&0x3f|0x80);
20 }else if(U<=0x4000000){
21 out[i++]=(U>>24|0xF8);
22 out[i++]=(U>>18&0x3f|0x80);
23 out[i++]=(U>>12&0x3f|0x80);
24 out[i++]=(U>>6&0x3f|0x80);
25 out[i++]=(U&0x3f|0x80);
26 }else if(U<=0x80000000){
27 out[i++]=(U>>30|0xFC);
28 out[i++]=(U>>24&0x3f|0x80);
29 out[i++]=(U>>18&0x3f|0x80);
30 out[i++]=(U>>12&0x3f|0x80);
31 out[i++]=(U>>6&0x3f|0x80);
32 out[i++]=(U&0x3f|0x80);
33 }
34 out[i]=0;
35 return out;
36 }
37
38 int main(int argc,char **argv){
39 int i = strtol(argv[1],0,0);
40 int m = strtol(argv[2],0,0);
41 for(;i<=m;i++){
42 printf("%s",int2u8(i));
43 if(i%16==15)putchar('\n');
44 }
45 }