0

そのため、プロジェクトで障害物にぶつかりました。私がやろうとしているのは、フラグを表す 4 つの個別のバイナリ文字を取得する方法を見つけ出すことです。私の最後のタスクは、これら 4 つのフラグを char[] に入れることでした。これはまったく難しくありませんでした。しかし今、4 を 16 進数に変換したいと思います。

たとえば、次のようになります。

O = 1;
C = 1;
Z = 0;
N = 0;

char flags[5];
flags[0] = O;
flags[1] = C;
flags[2] = Z;
flags[3] = N;

今、私は文字列または上記を16進数に変換できるものを作りたかったのです。たとえば、1100 を 0xC の 16 進数に変換したい

今、私は最初にそれを文字列にしてから解析しようとしましたが、今は混乱して迷っています。正しい出力が得られないだけです。

4

4 に答える 4

1
int flags;
flags = (O << 3) | (C << 2) | (Z << 1) | N;
sprintf(buffer, "0x%02X", 0xff & flags);

flagsintすべてのフラグを含む単一の変数が定義されています。

buffer十分なサイズの char 配列です。

この0xff & ..場合は必要ありませんが、 flags 変数が負になる可能性があり、それでも 1 バイトの出力 (2 桁の 16 進数) のみが必要な場合は、いつか必要になる可能性があります。

于 2012-10-26T09:14:16.733 に答える
0

unsigned char フラグ = 0; フラグ = ((O << 3) | (C << 2) | (Z << 1) | N);

現在、フラグには必要な 16 進値が含まれています。

于 2012-10-26T09:28:07.713 に答える
0

put flags[4]="\0"

この文字配列を指す新しい variable-char ポインターを使用できます。

その後、使用できますsprintf(newArray[i], "%x", flags[i]);

これにより、各文字が newArray 文字列の HEX に生成されます。文字列を印刷することで出力を取得できます。printf("%s\n",newArray);

于 2012-10-26T09:28:19.680 に答える