エロファボポタク

ナウなヤングなのでブログ書く。内容はノージャンル

10進数のデータを2進数表記に変換する

プログラミングうまくないので恥を承知でメモっとく
これでいろんな10進数のデータを2進数に変えられるね!(使い所あるのか?)

コピペしつつ少しいじったから動かなくなったかもしれないけど知らん。

">|c|"と"||<"でコードをサンドイッチすれば色もついて綺麗!
別の言語なら「c」をその言語に変えましょう。(情報くれたりっぷる氏に感謝)

#include <stdio.h>
#include <stdlib.h>

#define SF 65536
#define T 10
#define N 16
//datの行数
#define M 655360

//deciはdecimalの略,biはbinary
//データが65万あるのでmain中で定義するとセグフォ出る
int deci1[M], deci2[M], deci3[M], deci4[M];
//データの1行目が時間
double t[M];
//各桁分ける、二次元配列、Nを変えれば桁数変えられる
int bi1[M][N];
int bi2[M][N];
int bi3[M][N];
int bi4[M][N];

int main(void)
{
  int i=0;
  int j;
  int temp1, temp2, temp3, temp4;

  FILE *fp_in,*fp1,*fp2,*fp3,*fp4;
  if((fp_in=fopen("hoge_t_1_4.dat","r"))==NULL)
    {
      printf("Can't open\n");
      exit(EXIT_FAILURE);
    }
  if((fp1=fopen("hoge1.dat","w"))==NULL)
    {
      printf("Can't open\n");
      exit(EXIT_FAILURE);
    }
  if((fp2=fopen("hoge2.dat","w"))==NULL)
    {
      printf("Can't open\n");
      exit(EXIT_FAILURE);
    }
  if((fp3=fopen("hoge3.dat","w"))==NULL)
    {
      printf("Can't open\n");
      exit(EXIT_FAILURE);
    }
  if((fp4=fopen("hoge4.dat","w"))==NULL)
    {
      printf("Can't open\n");
      exit(EXIT_FAILURE);
    }

  //データの2~5行目(1行目は時間)をdeciに入れる
  while(i < M)
    {
      fscanf(fp1, "%lf %d %d %d %d", &t[i], &temp1, &temp2, &temp3, &temp4);
      //マイナスは弾く
      if(temp1<0)
        deci1[i]=0;
      else
        deci1[i] = temp1;
      if(temp2<0)
        deci2[i]=0;
      else
        deci2[i] = temp2;
      if(temp3<0)
        deci3[i]=0;
      else
        deci3[i] = temp3;
      if(temp4<0)
        deci4[i]=0;
      else
        deci4[i] = temp4;
      i++;
    }
  fclose(fp_in);

  //10進数を2進数に変換
  for(i=0;i<M;i++)
    {
      j=0;
      while(j<N)
        {
          bi1[i][j] = deci1[i] % 2;
          deci1[i] = deci1[i] / 2;
          fprintf(fp1,"%d ",bi1[i][j]);
          j++;
        }

      j=0;
      while(j<N)
        {
          bi2[i][j] = deci2[i] % 2;
          deci2[i] = deci2[i] / 2;
          fprintf(fp2,"%d ",bi2[i][j]);
          j++;
        }

      j=0;
      while(j<N)
        {
          bi3[i][j] = deci3[i] % 2;
          deci3[i] = deci3[i] / 2;
          fprintf(fp3,"%d ",bi3[i][j]);
          j++;
        }

      j=0;
      while(j<N)
        {
          bi4[i][j] = deci4[i] % 2;
          deci4[i] = deci4[i] / 2;
          fprintf(fp4,"%d ",bi4[i][j]);
          j++;
        }

      fprintf(fp1,"\n");
      fprintf(fp2,"\n");
      fprintf(fp3,"\n");
      fprintf(fp4,"\n");

    }
  
  fclose(fp1);
  fclose(fp2);
  fclose(fp3);
  fclose(fp4);

  return 0;
}


参考サイト
C言語入門 - 10進数を2進数に変換 - サンプルプログラム - Webkaru
はてなブログにソースコードを色付けして貼り付ける方法 - sonickun.log