seclan のほえほえルーム

| |

DUDE への変換方法 (UTF32 対応版)

・
2001/09/19 []

 Internationalized Domain Name に対応するために、複数の ACE が考案されています。DUDE もその一つです。DUDE には UTF16 と、UTF32 に対応した拡張版があります。

拡張変換方法 (for UTF32)

  1. U は UTF-32
    入力文字列を U0 U1 ... Un とするとき、
    
     a16[]="0123456789abcdef";
     b16[]="ghijklmnopqrstuv";
     B16[]="GHIJKLMNOPQRSTUV";
     
     PREV = 0;
     for(i = 0; i < n; i++)
      if(Ui > 0x10ffff){error();}
      if(Ui =='-'){put('-');continue;}
      t = PREV ^ Ui ;
      for(j = 0; j < 32; j+=4){
       if((t & (0xfffffff0 << j)) == 0){
        if(j >= 24) { //for 17th plane
         put(isupper(Ui) ? 'W': 'w')); 
        } else {
         put((isupper(Ui) ? B16: b16)[(Ui >> j)&0x0f]);
        }
        for(j -= 4; j >= 0; j -= 4)
         put(a16[(Ui >> j)&0x0f]);
        PREV = Ui;
        break;
       }
      }
     }
  2. "dq--" を先頭につけます。(DNS の場合、大文字小文字を区別しないので Dq--, dQ-- などを受け付ける必要があります)

変換例

  • 漢字 (0x0000226F 0x0000575B) → 変換 → 
    i26f l75b → 
    "dq--i26fl75b" (すなわちバイト列 64712d2d693236666c373562)


by seclan

関連


| |

 

配信

7.6 msec