酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

怪しいパック10進数の作り方

(2011/12/24 追記) 旧ブログから記事を移行しています。

バイナリファイルへの出力は2進数でするべきものだと思っていたがどうやら16進数で出力しなければならないようだ(多分)

よって、出力する直前で16進数へ変更してやる必要がある。思いついた方法は全部で3つ

  1. Char型で読み込んできた文字'5'を16進数に変更
  2. atoi関数で10進数に直したものを16進数へ変更してやる
  3. {0,1,1,0,0,1,1,0,0}のような配列に直したものを、ビット演算を駆使して1つの数値(16進数)にする

いづれにせよ3が一番面倒な事になってる。昨日考えていたアルゴリズムは一体なんだったんだろう。一度変更点なしで先生(社長)に聞いてみよう。変更するならそれからにしよう。

これは16進数の値を2進数表現するときに使うアルゴリズム。最上位より

  org = 0x1c;
  for ( i = 15; i >= 0;i--){
    printf("%d",(org >> i) & 0x0001);
  }
  putchar('\n');
  

"9C"(16進数)の形式出来たけど、これってパック10進数って言えるの?10進数に直したら152になるよ。