正整数値の 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 '_ | |