[PR]

正整数値の n 進表記文字列を求める

戻る

 正整数値の n 進表記文字列を求める関数を作る。

//*********************************************************
// buffer に、正整数値 u の |elements| 進表記文字列を取得する
// 文字列が取得できた場合は buffer を、
// 文字列が取得できなかった場合は NULL を返す。
//*********************************************************
char *ConvertRadix( unsigned int u, const char *elements, char *buffer, int bufsize )
{
	int radix; // 基数
	radix = strlen(elements);
	if ( radix < 2 ) return NULL; // 表記法は2進から

	int i = 0;
	do // while( u > 0 );
	{
		if ( i >= bufsize ) return NULL; // buffer のサイズ不足
		buffer[i] = elements[u % radix];
		u = u / radix;
		i++;
	}while( u > 0 );
	buffer[i] = '\0';

	memreverse( buffer, strlen(buffer), sizeof(char) ); // 文字列を反転させる
	return buffer;
}//ConvertRadix

使用例

/* 関数 ConvertRadix() の使用例です。 */
int main( void )
{
	char buffer[8];

	puts( ConvertRadix(   0, "01",               buffer, sizeof(buffer) ) ); //   0 の2進表記
	puts( ConvertRadix( 100, "01",               buffer, sizeof(buffer) ) ); // 100 の2進表記
	puts( ConvertRadix( 100, "01234567",         buffer, sizeof(buffer) ) ); // 100 の8進表記
	puts( ConvertRadix( 100, "0123456789",       buffer, sizeof(buffer) ) ); // 100 の10進表記
	puts( ConvertRadix( 100, "0123456789ABCDEF", buffer, sizeof(buffer) ) ); // 100 の16進表記
	puts( ConvertRadix( 100, "we_know's_now?",   buffer, sizeof(buffer) ) ); // 100 の14進表記?

	return 0;
}//main

実行結果

0
1100100
144
100
64
'_

Google
ご意見・ご感想をお聞かせ下さい。匿名で送信できます。

 * 返信が必要な場合には postmaster@katsura-kotonoha.sakura.ne.jp へ直接メールしてください。

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
IDGは全世界85カ国でIT関連雑誌を発行する出版社です。