view src/u8tbl.c @ 9401:7ad94f9b88a0

<Zarutian> le/rn religious nut/ This nut should never be eaten as it make people think they are pious but it actually doesnt. Found on the burning bush.
author HackBot
date Sat, 22 Oct 2016 21:56:49 +0000
parents 8ddd6d5dc480
children
line wrap: on
line source

#include "stdio.h"
#include "stdlib.h"

char *int2u8(unsigned U){
	static char out[7];
	int i=0;
	if(U<=0x80)out[i++]=U;
	else if(U<0x800){
		out[i++]=(U>>6|0xC0);
		out[i++]=(U&0x3f|0x80);
	}else if(U<=0x10000){
		out[i++]=(U>>12|0xE0);
		out[i++]=(U>>6&0x3f|0x80);
		out[i++]=(U&0x3f|0x80);
	}else if(U<=0x200000){
		out[i++]=(U>>18|0xF0);
		out[i++]=(U>>12&0x3f|0x80);
		out[i++]=(U>>6&0x3f|0x80);
		out[i++]=(U&0x3f|0x80);
	}else if(U<=0x4000000){
		out[i++]=(U>>24|0xF8);
		out[i++]=(U>>18&0x3f|0x80);
		out[i++]=(U>>12&0x3f|0x80);
		out[i++]=(U>>6&0x3f|0x80);
		out[i++]=(U&0x3f|0x80);
	}else if(U<=0x80000000){
		out[i++]=(U>>30|0xFC);
		out[i++]=(U>>24&0x3f|0x80);
		out[i++]=(U>>18&0x3f|0x80);
		out[i++]=(U>>12&0x3f|0x80);
		out[i++]=(U>>6&0x3f|0x80);
		out[i++]=(U&0x3f|0x80);
	}
	out[i]=0;
	return out;
}

int main(int argc,char **argv){
	int i = strtol(argv[1],0,0);
	int m = strtol(argv[2],0,0);
	for(;i<=m;i++){
		printf("%s",int2u8(i));
		if(i%16==15)putchar('\n');
	}
}