符号化のことで

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

符号化のことで

#1

投稿記事 by » 18年前

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

バグ

Re:符号化のことで

#2

投稿記事 by バグ » 18年前

一気に解こうと考えずに1つずつ順番に考えてみてはいかがでしょうか?


1:数値の入力

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

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

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


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

Re:符号化のことで

#3

投稿記事 by » 18年前

なるほど。
2進数へ変換し、配列に格納した後、文字列にするにはどうしたらよいのでしょうか?

バグ

Re:符号化のことで

#4

投稿記事 by バグ » 18年前

一番簡単な方法であれば、大きめの文字列格納用バッファを用意して、strcat関数やsprintf関数を利用すれば良いのではないでしょうか?(^-^)

Re:符号化のことで

#5

投稿記事 by » 18年前

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

バグ

Re:符号化のことで

#6

投稿記事 by バグ » 18年前

それならば、いっその事、文字列に直接代入してはいかがでしょう?
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:符号化のことで

#7

投稿記事 by » 18年前

なるほど。そうすれば文字列で扱えますね^^
どうも親切にありがとうございました。また困ったときはよろしくお願いします。

閉鎖

“C言語何でも質問掲示板” へ戻る