ページ 11

符号化のことで

Posted: 2007年7月17日(火) 10:38
by
はじめまして。
今、入力された数値を3桁ずつに分けて、最後の3桁に満たない残りの桁は、2桁もしくは1桁とし
その分けられたものをそれぞれ2進数に変換し(分けられたデータが3桁の場合は10桁の、2桁の場合は7桁の、1桁の場合は4桁の)それを結合させるプログラムを作成したいのですが、どうすればよいかわかりません。どのように作成すれば良いのでしょうか?

Re:符号化のことで

Posted: 2007年7月17日(火) 10:45
by バグ
一気に解こうと考えずに1つずつ順番に考えてみてはいかがでしょうか?


1:数値の入力

2:数値を3桁ずつに分ける

3:それぞれの数値を2進数に変換する

4:2進数の文字列を桁を整えた後に連結する


例えばこのような感じに分割して、1ステップずつ解決していくと楽だと思いますよ。

Re:符号化のことで

Posted: 2007年7月17日(火) 10:51
by
なるほど。
2進数へ変換し、配列に格納した後、文字列にするにはどうしたらよいのでしょうか?

Re:符号化のことで

Posted: 2007年7月17日(火) 10:58
by バグ
一番簡単な方法であれば、大きめの文字列格納用バッファを用意して、strcat関数やsprintf関数を利用すれば良いのではないでしょうか?(^-^)

Re:符号化のことで

Posted: 2007年7月17日(火) 11:04
by
例えば、3桁の数字データを2進数にするにあたり
        int binary[16];
int data, i;
         for(i=0; i<10; i++){
       binary = data % 2;
      data = data / 2;
     }
という処理を行ったあと、どのようにsprintf関数をしようして文字列かすればよいのでしょうか?

Re:符号化のことで

Posted: 2007年7月17日(火) 11:28
by バグ
それならば、いっその事、文字列に直接代入してはいかがでしょう?
char Binary[33];
int Data, i;

/* この位置で、Dataになんらかの数値を10進数で入力 */

for(i = 0; i <= 31; i++)
{
	if (Data % 2 == 1)
	{
		Binary[31 - i] = '1';
	}
	else
	{
		Binary[31 - i] = '0';
	}

	Data = Data / 2;
}

Binary = '\0';
printf("%s\n", Binary);

Re:符号化のことで

Posted: 2007年7月17日(火) 12:08
by
なるほど。そうすれば文字列で扱えますね^^
どうも親切にありがとうございました。また困ったときはよろしくお願いします。