Top > develop > UTF-8ひらがなカタカナ文字列考察C > C++

殆どというか、Cでしか書いていないのはご愛嬌でw
実行環境はCentOS5のコンパイル環境。文字コード設定はもちろんUTF-8
「ヴ」から「ヶ」はCP932(Windows XP)ひらがなで入力が出来ないので対象外。
殆どというか、Cでしか書いていないのはご愛嬌でw~
実行環境はCentOS5のコンパイル環境。文字コード設定はもちろんUTF-8~
「ヴ」から「ヶ」はCP932(Windows XP)ひらがなで入力が出来ないので対象外。~

* source カタカナ [#sf6b7f24]
 #include <string>
 #include <iostream>
 
 int main()
 {
   char kanaa[] = "あい";
   char hiragana[] = "ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん   ゝゞ";
   char katakana[] = "ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヽヾ";
 
   int i,j;
 
   printf("sizeof(char): %d\n", (int)sizeof(char));
   printf("sizeof(unsigned char): %d\n", (int)sizeof(unsigned char));
   printf("sizeof(short int): %d\n", (int)sizeof(short int));
   printf("sizeof(unsigned short int): %d\n", (int)sizeof(unsigned short int));
   printf("sizeof(int): %d\n", (int)sizeof(int));
   printf("sizeof(unsigned int): %d\n", (int)sizeof(unsigned int));
   printf("sizeof(long int): %d\n", (int)sizeof(long int));
   printf("sizeof(unsigned long int): %d\n", (int)sizeof(unsigned long int));
   printf("sizeof(long long int): %d\n", (int)sizeof(long long int));
   printf("sizeof(unsigned long long int): %d\n", (int)sizeof(unsigned long long int));
   printf("sizeof(float): %d\n", (int)sizeof(float));
   //  printf("sizeof(unsigned float): %d\n", (int)sizeof(unsigned float));
   printf("sizeof(double): %d\n", (int)sizeof(double));
   //  printf("sizeof(unsigned double): %d\n", (int)sizeof(unsigned double));
 
   printf("sizeof \"%s\": %d\n", (char*) &kanaa, (int) sizeof(kanaa));
   for( i=0 ; i<= (int) sizeof(kanaa) ; i++){
     printf(" , %2x", kanaa[i]);
   }
   printf("\n\n");
 
   printf("%s\n", (char*) &hiragana);
   printf("%s\n", (char*) &katakana);
 
   if( (int)sizeof(hiragana) == (int)sizeof(katakana)){
     for( i=0 ; i< (int)sizeof(hiragana) ; i+=3){
       printf("\"%c%c%c\" - \"%c%c%c\" = ",
              hiragana[i],
              hiragana[i+1],
              hiragana[i+2],
              katakana[i],
              katakana[i+1],
              katakana[i+2]);
       for( j=0 ; j<=2 ; j++){
         printf(" %2x ,", katakana[i+j] - hiragana[i+j] );
       }
       printf("\n");
       for(j=0 ; j<=1 ; j++){
         printf("%d\n",j);
         if(j==0){
           if(katakana[i+j] != (char)0xe3){
             printf("not top 1 byte was 0xe3!\n");
             break;
           }
         }
         if(j==1){
           printf("in 2 byte.\n");
           if(katakana[i+j] == (char)0x82){
             printf("katakana[i+j+1] & 0xe0(11100000) : hex: %2x, int: %u\n",
                    (char)katakana[i+j+1] & (char)0xe0,
                    (char)katakana[i+j+1] & (char)0xe0);
             printf("katakana[i+j+1] >> 5 : hex: %2x, int: %u\n",
                    katakana[i+j+1] >> 5,
                    katakana[i+j+1] >> 5);
             if( (katakana[i+j+1] & (char)0xe0) == (char)0xa0 &&
                 katakana[i+j+1] != (char)0xa0){
               // in [ァ]-[タ]
               printf("1: [ァ]-[タ] : %c%c%c ->char[2]-1 char[3] ^ 0x20 = %c%c%c\n\n",
                      katakana[i],
                      katakana[i+1],
                      katakana[i+2],
                      katakana[i],
                      katakana[i+1] - 1,
                      katakana[i+2] ^ 0x20);
             }
           }
           if(katakana[i+j] == (char)0x83){
             printf("katakana[i+j+1] & 0xe0(11100000) : hex: %2x, int: %u\n",
                    katakana[i+j+1] & (char)0xe0,
                    katakana[i+j+1] & (char)0xe0);
             printf("katakana[i+j+1] >> 5 : hex: %2x, int: %u\n",
                    katakana[i+j+1] >> 5,
                    katakana[i+j+1] >> 5);
             if( (katakana[i+j+1] & (char)0xe0) == (char)0x80 ){
               // in [ダ]-[ミ]
               printf("2: [ダ]-[ミ] : %c%c%c ->char[2]-2 char[3] ^ 0x20 = %c%c%c\n\n",
                      katakana[i],
                      katakana[i+1],
                      katakana[i+2],
                      katakana[i],
                      katakana[i+1] - 2,
                      katakana[i+2] ^ 0x20);
             }
             if( (katakana[i+j+1] & (char)0xe0) == (char)0xa0 &&
                 katakana[i+j+1] < (char)0xb4 ){
               // in [ム]-[ン]
               printf("3: [ム]-[ン]: %c%c%c ->char[2]-1 char[3] ^ 0x20 = %c%c%c\n\n",
                      katakana[i],
                      katakana[i+1],
                      katakana[i+2],
                      katakana[i],
                      katakana[i+1] - 1,
                      katakana[i+2] ^ 0x20);
             }
           }
         }
       }
 
       printf("\n");
     }
   }else{
     printf("invalid compare string.\n");
   }
   return 0;
 }

* 実行結果 カタカナ [#a6410ec3]
 $ g++ -m32 kanatest1.cpp -o kanatest1
 $ ./kanatest1
 sizeof(char): 1
 sizeof(unsigned char): 1
 sizeof(short int): 2
 sizeof(unsigned short int): 2
 sizeof(int): 4
 sizeof(unsigned int): 4
 sizeof(long int): 4
 sizeof(unsigned long int): 4
 sizeof(long long int): 8
 sizeof(unsigned long long int): 8
 sizeof(float): 4
 sizeof(double): 8
 sizeof "あい": 7
  , ffffffe3 , ffffff81 , ffffff82 , ffffffe3 , ffffff81 , ffffff84 ,  0 ,  7

 ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん   ゝゞ
 ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヽヾ
 "ぁ" - "ァ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ァ ->char[2]-1 char[3] ^ 0x20 = ぁ


 "あ" - "ア" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ア ->char[2]-1 char[3] ^ 0x20 = あ


 "ぃ" - "ィ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ィ ->char[2]-1 char[3] ^ 0x20 = ぃ


 "い" - "イ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : イ ->char[2]-1 char[3] ^ 0x20 = い


 "ぅ" - "ゥ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ゥ ->char[2]-1 char[3] ^ 0x20 = ぅ


 "う" - "ウ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ウ ->char[2]-1 char[3] ^ 0x20 = う


 "ぇ" - "ェ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ェ ->char[2]-1 char[3] ^ 0x20 = ぇ


 "え" - "エ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : エ ->char[2]-1 char[3] ^ 0x20 = え


 "ぉ" - "ォ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ォ ->char[2]-1 char[3] ^ 0x20 = ぉ


 "お" - "オ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : オ ->char[2]-1 char[3] ^ 0x20 = お


 "か" - "カ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : カ ->char[2]-1 char[3] ^ 0x20 = か


 "が" - "ガ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ガ ->char[2]-1 char[3] ^ 0x20 = が


 "き" - "キ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : キ ->char[2]-1 char[3] ^ 0x20 = き


 "ぎ" - "ギ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ギ ->char[2]-1 char[3] ^ 0x20 = ぎ


 "く" - "ク" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ク ->char[2]-1 char[3] ^ 0x20 = く


 "ぐ" - "グ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : グ ->char[2]-1 char[3] ^ 0x20 = ぐ


 "け" - "ケ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ケ ->char[2]-1 char[3] ^ 0x20 = け


 "げ" - "ゲ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ゲ ->char[2]-1 char[3] ^ 0x20 = げ


 "こ" - "コ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : コ ->char[2]-1 char[3] ^ 0x20 = こ


 "ご" - "ゴ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ゴ ->char[2]-1 char[3] ^ 0x20 = ご


 "さ" - "サ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : サ ->char[2]-1 char[3] ^ 0x20 = さ


 "ざ" - "ザ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ザ ->char[2]-1 char[3] ^ 0x20 = ざ


 "し" - "シ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : シ ->char[2]-1 char[3] ^ 0x20 = し


 "じ" - "ジ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ジ ->char[2]-1 char[3] ^ 0x20 = じ


 "す" - "ス" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ス ->char[2]-1 char[3] ^ 0x20 = す


 "ず" - "ズ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ズ ->char[2]-1 char[3] ^ 0x20 = ず


 "せ" - "セ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : セ ->char[2]-1 char[3] ^ 0x20 = せ


 "ぜ" - "ゼ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ゼ ->char[2]-1 char[3] ^ 0x20 = ぜ


 "そ" - "ソ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ソ ->char[2]-1 char[3] ^ 0x20 = そ


 "ぞ" - "ゾ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : ゾ ->char[2]-1 char[3] ^ 0x20 = ぞ


 "た" - "タ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 1: [ァ]-[タ] : タ ->char[2]-1 char[3] ^ 0x20 = た


 "だ" - "ダ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ダ ->char[2]-2 char[3] ^ 0x20 = だ


 "ち" - "チ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : チ ->char[2]-2 char[3] ^ 0x20 = ち


 "ぢ" - "ヂ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ヂ ->char[2]-2 char[3] ^ 0x20 = ぢ


 "っ" - "ッ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ッ ->char[2]-2 char[3] ^ 0x20 = っ


 "つ" - "ツ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ツ ->char[2]-2 char[3] ^ 0x20 = つ


 "づ" - "ヅ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ヅ ->char[2]-2 char[3] ^ 0x20 = づ


 "て" - "テ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : テ ->char[2]-2 char[3] ^ 0x20 = て


 "で" - "デ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : デ ->char[2]-2 char[3] ^ 0x20 = で


 "と" - "ト" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ト ->char[2]-2 char[3] ^ 0x20 = と


 "ど" - "ド" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ド ->char[2]-2 char[3] ^ 0x20 = ど


 "な" - "ナ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ナ ->char[2]-2 char[3] ^ 0x20 = な


 "に" - "ニ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ニ ->char[2]-2 char[3] ^ 0x20 = に


 "ぬ" - "ヌ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ヌ ->char[2]-2 char[3] ^ 0x20 = ぬ


 "ね" - "ネ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ネ ->char[2]-2 char[3] ^ 0x20 = ね


 "の" - "ノ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ノ ->char[2]-2 char[3] ^ 0x20 = の


 "は" - "ハ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ハ ->char[2]-2 char[3] ^ 0x20 = は


 "ば" - "バ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : バ ->char[2]-2 char[3] ^ 0x20 = ば


 "ぱ" - "パ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : パ ->char[2]-2 char[3] ^ 0x20 = ぱ


 "ひ" - "ヒ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ヒ ->char[2]-2 char[3] ^ 0x20 = ひ


 "び" - "ビ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ビ ->char[2]-2 char[3] ^ 0x20 = び


 "ぴ" - "ピ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ピ ->char[2]-2 char[3] ^ 0x20 = ぴ


 "ふ" - "フ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : フ ->char[2]-2 char[3] ^ 0x20 = ふ


 "ぶ" - "ブ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ブ ->char[2]-2 char[3] ^ 0x20 = ぶ


 "ぷ" - "プ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : プ ->char[2]-2 char[3] ^ 0x20 = ぷ


 "へ" - "ヘ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ヘ ->char[2]-2 char[3] ^ 0x20 = へ


 "べ" - "ベ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ベ ->char[2]-2 char[3] ^ 0x20 = べ


 "ぺ" - "ペ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ペ ->char[2]-2 char[3] ^ 0x20 = ぺ


 "ほ" - "ホ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ホ ->char[2]-2 char[3] ^ 0x20 = ほ


 "ぼ" - "ボ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ボ ->char[2]-2 char[3] ^ 0x20 = ぼ


 "ぽ" - "ポ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ポ ->char[2]-2 char[3] ^ 0x20 = ぽ


 "ま" - "マ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : マ ->char[2]-2 char[3] ^ 0x20 = ま


 "み" - "ミ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 katakana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 2: [ダ]-[ミ] : ミ ->char[2]-2 char[3] ^ 0x20 = み


 "む" - "ム" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ム ->char[2]-1 char[3] ^ 0x20 = む


 "め" - "メ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: メ ->char[2]-1 char[3] ^ 0x20 = め


 "も" - "モ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: モ ->char[2]-1 char[3] ^ 0x20 = も


 "ゃ" - "ャ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ャ ->char[2]-1 char[3] ^ 0x20 = ゃ


 "や" - "ヤ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ヤ ->char[2]-1 char[3] ^ 0x20 = や


 "ゅ" - "ュ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ュ ->char[2]-1 char[3] ^ 0x20 = ゅ


 "ゆ" - "ユ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ユ ->char[2]-1 char[3] ^ 0x20 = ゆ


 "ょ" - "ョ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ョ ->char[2]-1 char[3] ^ 0x20 = ょ


 "よ" - "ヨ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ヨ ->char[2]-1 char[3] ^ 0x20 = よ


 "ら" - "ラ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ラ ->char[2]-1 char[3] ^ 0x20 = ら


 "り" - "リ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: リ ->char[2]-1 char[3] ^ 0x20 = り


 "る" - "ル" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ル ->char[2]-1 char[3] ^ 0x20 = る


 "れ" - "レ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: レ ->char[2]-1 char[3] ^ 0x20 = れ


 "ろ" - "ロ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ロ ->char[2]-1 char[3] ^ 0x20 = ろ


 "ゎ" - "ヮ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ヮ ->char[2]-1 char[3] ^ 0x20 = ゎ


 "わ" - "ワ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ワ ->char[2]-1 char[3] ^ 0x20 = わ


 "ゐ" - "ヰ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ヰ ->char[2]-1 char[3] ^ 0x20 = ゐ


 "ゑ" - "ヱ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ヱ ->char[2]-1 char[3] ^ 0x20 = ゑ


 "を" - "ヲ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ヲ ->char[2]-1 char[3] ^ 0x20 = を


 "ん" - "ン" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 3: [ム]-[ン]: ン ->char[2]-1 char[3] ^ 0x20 = ん


 " " - "ヴ" =   0 ,  3 , 34 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293

 " " - "ヵ" =   0 ,  3 , 35 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293

 " " - "ヶ" =   0 ,  3 , 36 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293

 "ゝ" - "ヽ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293

 "ゞ" - "ヾ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 katakana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 katakana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293

 "・ - "・ =   0 ,  0 ,  0 ,
 0
 not top 1 byte was 0xe3!


* source ひらがな [#u72afc01]
 #include <stdio.h>
 
 int main()
 {
   char kanaa[] = "あい";
   char hiragana[] = "ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん   ゝゞ";
   char katakana[] = "ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヽヾ";
 
   int i,j;
 
   printf("sizeof(char): %d\n", (int)sizeof(char));
   printf("sizeof(unsigned char): %d\n", (int)sizeof(unsigned char));
   printf("sizeof(short int): %d\n", (int)sizeof(short int));
   printf("sizeof(unsigned short int): %d\n", (int)sizeof(unsigned short int));
   printf("sizeof(int): %d\n", (int)sizeof(int));
   printf("sizeof(unsigned int): %d\n", (int)sizeof(unsigned int));
   printf("sizeof(long int): %d\n", (int)sizeof(long int));
   printf("sizeof(unsigned long int): %d\n", (int)sizeof(unsigned long int));
   printf("sizeof(long long int): %d\n", (int)sizeof(long long int));
   printf("sizeof(unsigned long long int): %d\n", (int)sizeof(unsigned long long int));
   printf("sizeof(float): %d\n", (int)sizeof(float));
   //  printf("sizeof(unsigned float): %d\n", (int)sizeof(unsigned float));
   printf("sizeof(double): %d\n", (int)sizeof(double));
   //  printf("sizeof(unsigned double): %d\n", (int)sizeof(unsigned double));
 
   printf("sizeof \"%s\": %d\n", (char*) &kanaa, (int) sizeof(kanaa));
   for( i=0 ; i<= (int) sizeof(kanaa) ; i++){
     printf(" , %2x", kanaa[i]);
   }
   printf("\n\n");
 
   printf("%s\n", (char*) &hiragana);
   printf("%s\n", (char*) &katakana);
 
   if( (int)sizeof(hiragana) == (int)sizeof(katakana)){
     for( i=0 ; i< (int)sizeof(hiragana) ; i+=3){
       printf("\"%c%c%c\" - \"%c%c%c\" = ",
              hiragana[i],
              hiragana[i+1],
              hiragana[i+2],
              katakana[i],
              katakana[i+1],
              katakana[i+2]);
       for( j=0 ; j<=2 ; j++){
         printf(" %2x ,", katakana[i+j] - hiragana[i+j] );
       }
       printf("\n");
       for(j=0 ; j<=1 ; j++){
         printf("%d\n",j);
         if(j==0){
           if(hiragana[i+j] != (char)0xe3){
             printf("not top 1 byte was 0xe3!\n");
             break;
           }
         }
         if(j==1){
           printf("in 2 byte.\n");
           if(hiragana[i+j] == (char)0x81){
             printf("hiragana[i+j+1] & 0xe0(11100000) : hex: %2x, int: %u\n",
                    (char)hiragana[i+j+1] & (char)0xe0,
                    (char)hiragana[i+j+1] & (char)0xe0);
             printf("hiragana[i+j+1] >> 5 : hex: %2x, int: %u\n",
                    hiragana[i+j+1] >> 5,
                    hiragana[i+j+1] >> 5);
             if( (hiragana[i+j+1] & (char)0xe0) == (char)0x80 &&
                 hiragana[i+j+1] != (char)0xa0){
               // in [ァ]-[タ]
               printf("1: [ァ]-[タ] : %c%c%c ->char[2]+1 char[3] ^ 0x20 = %c%c%c\n\n",
                      hiragana[i],
                      hiragana[i+1],
                      hiragana[i+2],
                      hiragana[i],
                      hiragana[i+1] + 1,
                      hiragana[i+2] ^ 0x20);
             }
             if( (hiragana[i+j+1] & (char)0xe0) == (char)0xa0 ){
               // in [ダ]-[ミ]
               printf("2: [ダ]-[ミ] : %c%c%c ->char[2]+2 char[3] ^ 0x20 = %c%c%c\n\n",
                      hiragana[i],
                      hiragana[i+1],
                      hiragana[i+2],
                      hiragana[i],
                      hiragana[i+1] + 2,
                      hiragana[i+2] ^ 0x20);
             }
           }
           if(hiragana[i+j] == (char)0x82){
             printf("hiragana[i+j+1] & 0xe0(11100000) : hex: %2x, int: %u\n",
                    hiragana[i+j+1] & (char)0xe0,
                    hiragana[i+j+1] & (char)0xe0);
             printf("hiragana[i+j+1] >> 5 : hex: %2x, int: %u\n",
                    hiragana[i+j+1] >> 5,
                    hiragana[i+j+1] >> 5);
             if( (hiragana[i+j+1] & (char)0xe0) == (char)0x80 &&
                 hiragana[i+j+1] < (char)0x94 ){
               // in [ム]-[ン]
               printf("3: [ム]-[ン]: %c%c%c ->char[2]+1 char[3] ^ 0x20 = %c%c%c\n\n",
                      hiragana[i],
                      hiragana[i+1],
                      hiragana[i+2],
                      hiragana[i],
                      hiragana[i+1] + 1,
                      hiragana[i+2] ^ 0x20);
             }
           }
         }
       }
 
       printf("\n");
     }
   }else{
     printf("invalid compare string.\n");
   }
   return 0;
 }


* 実行結果 ひらがな [#r451fc71]
 sizeof(char): 1
 sizeof(unsigned char): 1
 sizeof(short int): 2
 sizeof(unsigned short int): 2
 sizeof(int): 4
 sizeof(unsigned int): 4
 sizeof(long int): 8
 sizeof(unsigned long int): 8
 sizeof(long long int): 8
 sizeof(unsigned long long int): 8
 sizeof(float): 4
 sizeof(double): 8
 sizeof "あい": 7
  , ffffffe3 , ffffff81 , ffffff82 , ffffffe3 , ffffff81 , ffffff84 ,  0 ,  0

 ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん   ゝゞ
 ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヽヾ
 "ぁ" - "ァ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : ぁ ->char[2]+1 char[3] ^ 0x20 = ァ


 "あ" - "ア" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : あ ->char[2]+1 char[3] ^ 0x20 = ア


 "ぃ" - "ィ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : ぃ ->char[2]+1 char[3] ^ 0x20 = ィ


 "い" - "イ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : い ->char[2]+1 char[3] ^ 0x20 = イ


 "ぅ" - "ゥ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : ぅ ->char[2]+1 char[3] ^ 0x20 = ゥ


 "う" - "ウ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : う ->char[2]+1 char[3] ^ 0x20 = ウ


 "ぇ" - "ェ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : ぇ ->char[2]+1 char[3] ^ 0x20 = ェ


 "え" - "エ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : え ->char[2]+1 char[3] ^ 0x20 = エ


 "ぉ" - "ォ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : ぉ ->char[2]+1 char[3] ^ 0x20 = ォ


 "お" - "オ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : お ->char[2]+1 char[3] ^ 0x20 = オ


 "か" - "カ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : か ->char[2]+1 char[3] ^ 0x20 = カ


 "が" - "ガ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : が ->char[2]+1 char[3] ^ 0x20 = ガ


 "き" - "キ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : き ->char[2]+1 char[3] ^ 0x20 = キ


 "ぎ" - "ギ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : ぎ ->char[2]+1 char[3] ^ 0x20 = ギ


 "く" - "ク" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : く ->char[2]+1 char[3] ^ 0x20 = ク


 "ぐ" - "グ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : ぐ ->char[2]+1 char[3] ^ 0x20 = グ


 "け" - "ケ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : け ->char[2]+1 char[3] ^ 0x20 = ケ


 "げ" - "ゲ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : げ ->char[2]+1 char[3] ^ 0x20 = ゲ


 "こ" - "コ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : こ ->char[2]+1 char[3] ^ 0x20 = コ


 "ご" - "ゴ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : ご ->char[2]+1 char[3] ^ 0x20 = ゴ


 "さ" - "サ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : さ ->char[2]+1 char[3] ^ 0x20 = サ


 "ざ" - "ザ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : ざ ->char[2]+1 char[3] ^ 0x20 = ザ


 "し" - "シ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : し ->char[2]+1 char[3] ^ 0x20 = シ


 "じ" - "ジ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : じ ->char[2]+1 char[3] ^ 0x20 = ジ


 "す" - "ス" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : す ->char[2]+1 char[3] ^ 0x20 = ス


 "ず" - "ズ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : ず ->char[2]+1 char[3] ^ 0x20 = ズ


 "せ" - "セ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : せ ->char[2]+1 char[3] ^ 0x20 = セ


 "ぜ" - "ゼ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : ぜ ->char[2]+1 char[3] ^ 0x20 = ゼ


 "そ" - "ソ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : そ ->char[2]+1 char[3] ^ 0x20 = ソ


 "ぞ" - "ゾ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : ぞ ->char[2]+1 char[3] ^ 0x20 = ゾ


 "た" - "タ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 1: [ァ]-[タ] : た ->char[2]+1 char[3] ^ 0x20 = タ


 "だ" - "ダ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : だ ->char[2]+2 char[3] ^ 0x20 = ダ


 "ち" - "チ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ち ->char[2]+2 char[3] ^ 0x20 = チ


 "ぢ" - "ヂ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ぢ ->char[2]+2 char[3] ^ 0x20 = ヂ


 "っ" - "ッ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : っ ->char[2]+2 char[3] ^ 0x20 = ッ


 "つ" - "ツ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : つ ->char[2]+2 char[3] ^ 0x20 = ツ


 "づ" - "ヅ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : づ ->char[2]+2 char[3] ^ 0x20 = ヅ


 "て" - "テ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : て ->char[2]+2 char[3] ^ 0x20 = テ


 "で" - "デ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : で ->char[2]+2 char[3] ^ 0x20 = デ


 "と" - "ト" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : と ->char[2]+2 char[3] ^ 0x20 = ト


 "ど" - "ド" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ど ->char[2]+2 char[3] ^ 0x20 = ド


 "な" - "ナ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : な ->char[2]+2 char[3] ^ 0x20 = ナ


 "に" - "ニ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : に ->char[2]+2 char[3] ^ 0x20 = ニ


 "ぬ" - "ヌ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ぬ ->char[2]+2 char[3] ^ 0x20 = ヌ


 "ね" - "ネ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ね ->char[2]+2 char[3] ^ 0x20 = ネ


 "の" - "ノ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : の ->char[2]+2 char[3] ^ 0x20 = ノ


 "は" - "ハ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : は ->char[2]+2 char[3] ^ 0x20 = ハ


 "ば" - "バ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ば ->char[2]+2 char[3] ^ 0x20 = バ


 "ぱ" - "パ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ぱ ->char[2]+2 char[3] ^ 0x20 = パ


 "ひ" - "ヒ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ひ ->char[2]+2 char[3] ^ 0x20 = ヒ


 "び" - "ビ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : び ->char[2]+2 char[3] ^ 0x20 = ビ


 "ぴ" - "ピ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ぴ ->char[2]+2 char[3] ^ 0x20 = ピ


 "ふ" - "フ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ふ ->char[2]+2 char[3] ^ 0x20 = フ


 "ぶ" - "ブ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ぶ ->char[2]+2 char[3] ^ 0x20 = ブ


 "ぷ" - "プ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ぷ ->char[2]+2 char[3] ^ 0x20 = プ


 "へ" - "ヘ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : へ ->char[2]+2 char[3] ^ 0x20 = ヘ


 "べ" - "ベ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : べ ->char[2]+2 char[3] ^ 0x20 = ベ


 "ぺ" - "ペ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ぺ ->char[2]+2 char[3] ^ 0x20 = ペ


 "ほ" - "ホ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ほ ->char[2]+2 char[3] ^ 0x20 = ホ


 "ぼ" - "ボ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ぼ ->char[2]+2 char[3] ^ 0x20 = ボ


 "ぽ" - "ポ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ぽ ->char[2]+2 char[3] ^ 0x20 = ポ


 "ま" - "マ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : ま ->char[2]+2 char[3] ^ 0x20 = マ


 "み" - "ミ" =   0 ,  2 , ffffffe0 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffffa0, int: 4294967200
 hiragana[i+j+1] >> 5 : hex: fffffffd, int: 4294967293
 2: [ダ]-[ミ] : み ->char[2]+2 char[3] ^ 0x20 = ミ


 "む" - "ム" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: む ->char[2]+1 char[3] ^ 0x20 = ム


 "め" - "メ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: め ->char[2]+1 char[3] ^ 0x20 = メ


 "も" - "モ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: も ->char[2]+1 char[3] ^ 0x20 = モ


 "ゃ" - "ャ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: ゃ ->char[2]+1 char[3] ^ 0x20 = ャ


 "や" - "ヤ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: や ->char[2]+1 char[3] ^ 0x20 = ヤ


 "ゅ" - "ュ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: ゅ ->char[2]+1 char[3] ^ 0x20 = ュ


 "ゆ" - "ユ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: ゆ ->char[2]+1 char[3] ^ 0x20 = ユ


 "ょ" - "ョ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: ょ ->char[2]+1 char[3] ^ 0x20 = ョ


 "よ" - "ヨ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: よ ->char[2]+1 char[3] ^ 0x20 = ヨ


 "ら" - "ラ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: ら ->char[2]+1 char[3] ^ 0x20 = ラ


 "り" - "リ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: り ->char[2]+1 char[3] ^ 0x20 = リ


 "る" - "ル" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: る ->char[2]+1 char[3] ^ 0x20 = ル


 "れ" - "レ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: れ ->char[2]+1 char[3] ^ 0x20 = レ


 "ろ" - "ロ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: ろ ->char[2]+1 char[3] ^ 0x20 = ロ


 "ゎ" - "ヮ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: ゎ ->char[2]+1 char[3] ^ 0x20 = ヮ


 "わ" - "ワ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: わ ->char[2]+1 char[3] ^ 0x20 = ワ


 "ゐ" - "ヰ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: ゐ ->char[2]+1 char[3] ^ 0x20 = ヰ


 "ゑ" - "ヱ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: ゑ ->char[2]+1 char[3] ^ 0x20 = ヱ


 "を" - "ヲ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: を ->char[2]+1 char[3] ^ 0x20 = ヲ


 "ん" - "ン" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292
 3: [ム]-[ン]: ん ->char[2]+1 char[3] ^ 0x20 = ン


 " " - "ヴ" =   0 ,  3 , 34 ,
 0
 1
 in 2 byte.

 " " - "ヵ" =   0 ,  3 , 35 ,
 0
 1
 in 2 byte.

 " " - "ヶ" =   0 ,  3 , 36 ,
 0
 1
 in 2 byte.

 "ゝ" - "ヽ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292

 "ゞ" - "ヾ" =   0 ,  1 , 20 ,
 0
 1
 in 2 byte.
 hiragana[i+j+1] & 0xe0(11100000) : hex: ffffff80, int: 4294967168
 hiragana[i+j+1] >> 5 : hex: fffffffc, int: 4294967292

 "" - "ヨ" =   0 , ffffffd6 , 1e ,
 0
 not top 1 byte was 0xe3!


リロード   差分   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS