char str[33] = "";
snprintf(str, sizeof str, "%s%s%s%s", preg->opbits,preg->rsbits,preg->rtbits,preg->ibits);
char *instruction = &str[0]
32 ビット長の MIPS アセンブリ命令の文字列表現のさまざまな要素からバイナリ文字列を作成しようとしています。ここで、opbits は 6 ビットのオペコード、rsbits は最初のソース レジスタの 5 ビット数、rtbits はイミディエイト (i) タイプの命令のデスティネーション レジスタの 5 ビット番号と ibits は、16 ビット整数値を表します。これらを文字配列に連結し、その配列の最初の要素にポインターを割り当てたいと思います。そのポインターは、文字列として書き込まれた数値を変換する定義済みの関数に渡すことができます (strtoint 関数にも渡される指定されたベースで)。 ) を整数値に変換します。
私の主な質問は、連結されるすべての文字列の最後にある null バイトを考慮する必要があるかどうか、そして第二に、これはうまくいくでしょうか?