📄 utf8_u.c
字号:
#include <stdio.h>
#include "uni_utf8.h"
#define ENDIAN 0
int main(int argc, char *argv[])
{
unsigned int utf8;
unsigned short uni;
unsigned int utf;
unsigned int c = 0; unsigned char next[] = {0, 0, 0, 0}; char *pn = next;
char *p; char *pp;
int cc = 0; int i = 4; int len;
int count = 0, cou = 0;
if(argc < 2)
{
printf("\nusage: u2utf8 hex( >= 0) \n\te.g. u2utf 7063\n\n");
return -1;
}
if(argv[1][0] == '-')
{
printf("\n negative is not allowed!");
return -1;
}
if(argv[1][0] == '0' && (argv[1][1] == 'x' || (argv[1][1] == 'X')))
{
p = argv[1] + 2;
while(*p)
{
count ++;
//printf("%x \t", *p);
p ++;
}
p--;
if(count <= 0)
{
printf("illegal!\n");
return;
}
//printf("count = %d\n", count);
for(;count > 0; count --)
{
//printf("count = %d\n", count);
if(*p >= '0' && *p <= '9')
{
cc = *p - '0';
}
else if(*p >= 'A' && *p <= 'F')
{
cc = *p - 'A' + 10;
}
else if(*p >= 'a' && *p <= 'f')
{
cc = *p - 'a' + 10;
}
else
{
printf("illegal char\n");
return -1;
}
c |= cc << (4 * (cou ++));
p --;
}
printf("%x \t", c);
if(c > 0xffff)
{
printf("\n%d is too big!\n");
return -1;
}
uni = c;
}
else
{
c = atoi(argv[1]);
if(c > 0xffff)
{
printf("\n%d is too big!\n");
return -1;
}
uni = c;
}
#if ENDIAN
uni = (uni << 8) | (uni >> 8);
#endif
utf8 = u2utf8(uni);
printf("u-%x--->utf-8:0x%x\n", uni, utf8); pp = (char *)&utf8 + 3;////**/ while(*pp == 0 && i > 0) {
pp --; i --; } if(i <= 0) return -1; while(i) { *pn++ = *pp--;////**/ i--; }
printf("%d: %x %x %x %x\n", i, next[0], next[1], next[2], next[3]); len = utf82u(next, &utf); printf("%d --0x%x\n", len, utf);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -