annotate src/u8tbl.c @ 8916:0234daffd946

<oerjan> addquote <int-e> I couldn\'t help thinking that maybe if one considers the ramifications in full detail it will turn out that overthinking is often not helpful and therefore, not something to be proud of.
author HackBot
date Sun, 14 Aug 2016 02:31:47 +0000
parents 8ddd6d5dc480
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6342
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
1 #include "stdio.h"
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
2 #include "stdlib.h"
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
3
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
4 char *int2u8(unsigned U){
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
5 static char out[7];
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
6 int i=0;
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
7 if(U<=0x80)out[i++]=U;
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
8 else if(U<0x800){
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
9 out[i++]=(U>>6|0xC0);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
10 out[i++]=(U&0x3f|0x80);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
11 }else if(U<=0x10000){
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
12 out[i++]=(U>>12|0xE0);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
13 out[i++]=(U>>6&0x3f|0x80);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
14 out[i++]=(U&0x3f|0x80);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
15 }else if(U<=0x200000){
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
16 out[i++]=(U>>18|0xF0);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
17 out[i++]=(U>>12&0x3f|0x80);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
18 out[i++]=(U>>6&0x3f|0x80);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
19 out[i++]=(U&0x3f|0x80);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
20 }else if(U<=0x4000000){
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
21 out[i++]=(U>>24|0xF8);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
22 out[i++]=(U>>18&0x3f|0x80);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
23 out[i++]=(U>>12&0x3f|0x80);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
24 out[i++]=(U>>6&0x3f|0x80);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
25 out[i++]=(U&0x3f|0x80);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
26 }else if(U<=0x80000000){
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
27 out[i++]=(U>>30|0xFC);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
28 out[i++]=(U>>24&0x3f|0x80);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
29 out[i++]=(U>>18&0x3f|0x80);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
30 out[i++]=(U>>12&0x3f|0x80);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
31 out[i++]=(U>>6&0x3f|0x80);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
32 out[i++]=(U&0x3f|0x80);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
33 }
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
34 out[i]=0;
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
35 return out;
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
36 }
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
37
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
38 int main(int argc,char **argv){
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
39 int i = strtol(argv[1],0,0);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
40 int m = strtol(argv[2],0,0);
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
41 for(;i<=m;i++){
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
42 printf("%s",int2u8(i));
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
43 if(i%16==15)putchar('\n');
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
44 }
8e6c7372226d <\oren\> fetch http://www.orenwatson.be/u8tbl.c
HackBot
parents:
diff changeset
45 }