dump_map.c
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:1k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. #include <stdio.h>
  2. #include <string.h>
  3. static void print_short_array(unsigned short *a, size_t width)
  4. {
  5.   int i;
  6.   printf("{n");
  7.   for (i=0; i<=0xFF; i++)
  8.   {
  9.     const char *fmt= (width==4) ? "0x%04X" : "0x%02X";
  10.     printf(fmt,(int)a[i]);
  11.     printf("%s%s",i<0xFF?",":"",(i+1) % 8 ? "" :"n");
  12.   }
  13.   printf("};n");
  14.   
  15. }
  16. int main(void)
  17. {
  18.   char str[160];
  19.   unsigned short touni[256];
  20.   unsigned short fromuni[65536];
  21.   unsigned short fromstat[256];
  22.   int i;
  23.   
  24.   bzero((void*)touni,sizeof(touni));
  25.   bzero((void*)fromuni,sizeof(fromuni));
  26.   bzero((void*)fromstat,sizeof(fromstat));
  27.   
  28.   while (fgets(str,sizeof(str),stdin))
  29.   {
  30.     unsigned int c,u;
  31.     
  32.     if ((str[0]=='#') || (2!=sscanf(str,"%x%x",&c,&u)))
  33.       continue;
  34.     if (c>0xFF || u>0xFFFF)
  35.       continue;
  36.     
  37.     touni[c]= u;
  38.     fromuni[u]= c;
  39.   }
  40.   
  41.   printf("unsigned short cs_to_uni[256]=");
  42.   print_short_array(touni, 4);
  43.   
  44.   for (i=0;i<=0xFF;i++)
  45.   {
  46.     fromstat[touni[i]>>8]++;
  47.   }
  48.   
  49.   for (i=0;i<=256;i++)
  50.   {
  51.     if (fromstat[i])
  52.     { 
  53.       printf("unsigned char pl%02X[256]=",i);
  54.       print_short_array(fromuni+i*256, 2);
  55.     }
  56.   }
  57.   
  58.   printf("unsigned short *uni_to_cs[256]={n");
  59.   for (i=0;i<=255;i++)
  60.   {
  61.     if (fromstat[i])
  62.       printf("pl%02X",i);
  63.     else
  64.       printf("NULL");
  65.     printf("%s%s",i<255?",":"",((i+1) % 8) ? "":"n");
  66.   }
  67.   printf("};n");
  68.   
  69.   return 0;
  70. }