パスワードを忘れた? アカウント作成
452572 journal

kibayasiの日記: 宛 Endian 通 3

日記 by kibayasi

だれか、BigEndianからLittleEndianの変換方法教えてください。
float型の。
できれば、Cのサンプルソースください。URLでもいいです。
くれーーー!!(ダメダメ君)

もっと欲をいうと、VAXのFloatに変換できる人最高。(笑)

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • floatのエンディアンを変換するというのがいまいちよく分からないのですが、floatのバイトオーダーを並べ替えるだけなら

    float convert(float num)
    {
      int i;
      unsigned char buf;
      union {
        float f;
        unsigned char c[sizeof(float)];
      } data;

      data.f = num;
      for(i = 0; i < sizeof(float) / 2; i++){
        int pos = sizeof(float) - 1 - i;

        buf = data.c[pos];
        data.c[pos] = data.c[i];
        data.c[i] = buf;
      }

      return data.f;
    }
  • convertEndian((union FI*)f); とかしてよぶよろし

    union FI {
          float f;
          char c[4];
    };

    float convertEndian(union FI *fi)
    {
          char a,b,c,d;
          a = fi->c[0];
          b = fi->c[1];
          c = fi->c[2];
          d = fi->c[3];
          fi->c[0] = d;
          fi->c[1] = d;
          fi->c[2] = d;
          fi->c[3] = d;

          return fi->f;
    }
    --
    -- Takehiro TOMINAGA // may the source be with you!
    • ああやっぱりまちがえてた。下書き無しはいかんね。っていうかこぴぺしてそのままにしてたYo!

                  fi->c[0] = d;
                  fi->c[1] = d;
                  fi->c[2] = d;
                  fi->c[3] = d;

      の部分は

                  fi->c[0] = d;
                  fi->c[1] = c;
                  fi->c[2] = b;
                  fi->c[3] = a;

      だすね。
      --
      -- Takehiro TOMINAGA // may the source be with you!
      親コメント
typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...