00001 #include <stdlib.h>
00002 #include <stdio.h>
00003 #include <string.h>
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 void printUTF8(long long u) {
00024 long long m;
00025 if(u<0x80) {
00026 printf("%c", (unsigned char)u);
00027 }
00028 else if(u<0x800) {
00029 m = ((u&0x7c0)>>6) | 0xc0;
00030 printf("%c", (unsigned char)m);
00031 m = (u&0x3f) | 0x80;
00032 printf("%c", (unsigned char)m);
00033 }
00034 else if(u<0x10000) {
00035 m = ((u&0xf000)>>12) | 0xe0;
00036 printf("%c",(unsigned char)m);
00037 m = ((u&0xfc0)>>6) | 0x80;
00038 printf("%c",(unsigned char)m);
00039 m = (u & 0x3f) | 0x80;
00040 printf("%c",(unsigned char)m);
00041 }
00042 else if(u<0x200000) {
00043 m = ((u&0x1c0000)>>18) | 0xf0;
00044 printf("%c", (unsigned char)m);
00045 m = ((u& 0x3f000)>>12) | 0x80;
00046 printf("%c", (unsigned char)m);
00047 m = ((u& 0xfc0)>>6) | 0x80;
00048 printf("%c", (unsigned char)m);
00049 m = (u&0x3f) | 0x80;
00050 printf("%c", (unsigned char)m);
00051 }
00052 else if(u<0x4000000){
00053 m = ((u&0x3000000)>>24) | 0xf8;
00054 printf("%c", (unsigned char)m);
00055 m = ((u&0xfc0000)>>18) | 0x80;
00056 printf("%c", (unsigned char)m);
00057 m = ((u&0x3f000)>>12) | 0x80;
00058 printf("%c", (unsigned char)m);
00059 m = ((u&0xfc00)>>6) | 0x80;
00060 printf("%c", (unsigned char)m);
00061 m = (u&0x3f) | 0x80;
00062 printf("%c", (unsigned char)m);
00063 }
00064 else {
00065 m = ((u&0x40000000)>>30) | 0xfc;
00066 printf("%c", (unsigned char)m);
00067 m = ((u&0x3f000000)>>24) | 0x80;
00068 printf("%c", (unsigned char)m);
00069 m = ((u&0xfc0000)>>18) | 0x80;
00070 printf("%c", (unsigned char)m);
00071 m = ((u&0x3f000)>>12) | 0x80;
00072 printf("%c", (unsigned char)m);
00073 m = ((u&0xfc0)>>6) | 0x80;
00074 printf("%c", (unsigned char)m);
00075 m = (u&0x3f)| 0x80;
00076 printf("%c", (unsigned char)m);
00077 }
00078 }
00079
00080 int main() {
00081 int i,j;
00082 long long n1, n2;
00083 unsigned char b1[15], b2[15];
00084 unsigned char buf[1024];
00085 i=0;
00086 while(fgets(buf, 1024, stdin)) {
00087
00088 for(i=0;i<strlen(buf); i++)
00089 if(buf[i]=='U') {
00090 if(buf[i+1] == '+') {
00091 n1 = strtoll(buf+i+2,0,16);
00092 printf("U+%05x", n1);
00093 printUTF8(n1);printf("|");
00094 }
00095 }
00096 printf("\n");
00097 }
00098 }
00099