ソフトウェア開発したい日記

「面白い!」と思った頭の体操や、数学の問題を載せていきます
その他ロードバイクででかけた先の写真や、ソフト開発のメモ等

T大のクリアファイルにあるバイナリコードを解析

2010年05月25日 19時34分57秒 | 独り言
先日某T大の情報理工学系の入試説明会に行ったときもらったクリアファイル。

背景に女の人が写っていて、その手前には1万桁くらいありそうなバイナリコードが。
そんでもって説明会中に「これは8ビットのASCIIコードです」という大ヒント。
久々にC言語使って解析してみることに。

ということで超適当バイナリ⇒ASCII変換ソースコード。

※ヘッダーは省略(何故か、<>で囲ったとこが見えなくなる。)

int main(void){

  int i, n;
  char c;

  while(c != EOF){
    n = 0;
    for(i = 0; i <8; i++){       c = getchar();
      //8ビット目はパリティビットなのでスルー

      if(c == '1' && i <7){         n += pow(2, 6-i);
      }
    }
    printf("%c", n);
  }
  return 0;
}


そんでもって、バイナリコードはコマンドラインから

./a < binary.txt

って感じで直接読み込ませるという手抜き。

無事ASCIIコードに変換できました。
ところが途中から文字化け。
調べてみると、パリティビットが存在しない7ビットのデータが存在。
パリティビットを追加して再び見てみると、
その箇所を境に全く同じ英文の繰り返しになっていました。

しかも結果は、クリアファイルに堂々と英語で書いてあったという。
「ニヤッ」っとしてしまいました。

ちなみにそのバイナリコードはこんな感じ。

10001110111001001100001011001000111010101100001011101000110010100100000
01010011011000110110100001101111011011110110110000100000011011110110011
00010000001001001011011100110011001101111011100100110110101100001011101
00011010010110111101101110001000000101001101100011011010010110010101101
11001100011011001010010000001100001011011100110010000100000010101000110
01010110001101101000011011100110111101101100011011110110011101111001001
01100001000000101010001101000011001010010000001010101011011100110100101
11011001100101011100100111001101101001011101000111100100100000011011110
11001100010000001010100011011110110101101111001011011110100011101110010
01100001011001000111010101100001011101000110010100100000010100110110001
10110100001101111011011110110110000100000011011110110011000100000010010
01011011100110011001101111011100100110110101100001011101000110100101101
11101101110001000000101001101100011011010010110010101101110011000110110
01010010000001100001011011100110010000100000010101000110010101100011011
0100001