質問: base*result; } return result; } ``` ### 試したこと (char)でキャストしたがエラーは回避されなかった。 また、2進数16を整数値のようにint型で1111とあらわそうと考えたが、意味が違ってくると思い作るのをやめました。 ### 補足情報(FW/ツールのバージョンなど) VirtualBox
回答: ### はじめにコンパイルエラー等 * `x`,`i`の宣言がない。mainが書かれていないので省略されていると思うがコンパイルエラーになるので回答者に対して不親切。 * binary[8]はSegmentation faultの危険がある。8文字確保したいならヌル文字分を含めて[9]にしなければならない。 ### 本題 10進数の数値xをn進数の数字列に置き換える定石は、 * x と n の剰余を求める(`x % n`) * x を n で除算しその整数位を新しいxとする(`x = x / n`) を繰り返すことです。 下の桁から求まるので、2進数8桁で求めるなら`binary[7]`からスタートです。 ``` for(int i = 7; i >= 0; i--){ binary[i] = '0' + (x % 2); // 2で割った余りを代入。このような文字の代入法は覚えておくと役に立つ!! x = x / 2; // x を 2で割る } binary[8] = '\0'; // 最後にヌル文字を入れるのを忘れずに!! ``` これなら特に気にすることなく0埋めも可能です。 sprintfもmypowも不要です。