BohYoh.comトップページへ

基本情報技術者試験 平成15年度・秋期・午後 問8 ソースプログラム

Java講座へ  情報処理技術者試験対策講座へ  情報処理技術者試験対策講座(Java)へ 
public class Encoder {
   static final char[] CHARS = ("ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
   "abcdefghijklmnopqrstuvwxyz0123456789+/").toCharArray();
   private int n = 0;
   private byte[] bin;
   public Encoder(byte[] bin) {
      if (bin == nullthis.bin = new byte[0];
      else this.bin = bin;
   }
   public boolean hasNext() {
      return n < (bin.length + 24;
   }
   public char next() {
      char letter;
      int pos = (int)(n * 0.75);
      // 変換対象の 6 ビットのデータが含まれる 2 バイトのデータを取得
      if (pos < bin.length) {
         int cell = bin[pos++<< 8;
         if (pos < bin.lengthcell += bin[pos255;
         // 変換すべき 6 ビットを抽出し, 対応する 1 文字に変換
         letter = CHARS[(cell >> (n + 3463];
      else {
         if (!hasNext())
            throw new java.util.NoSuchElementException();
         else letter = '=';
      }
      n++;
      return letter;
   }
}

class EncoderTest {
   public static void main(String[] args) {
      byte[] bin = {0x120x340x450x67};
      Encoder encoder = new Encoder(bin);
      while (encoder.hasNext()) {
         System.out.print(encoder.next());
      }
      System.out.println();
   }
}