1

印刷目的でuint32a を文字列に変換したいと思います。charMyは " "uint32のような住所です0x00402B00

前の " " はあまり気0xにしませんが、そこにあるかどうかは問題ではありません。

charこの数値を文字列に変換するにはどうすればよいですか。

string[0] = 0
string[1] = 0
string[2] = 4
string[3] = 0
string[4] = 2

....等々。

このようなものは機能しますか?:

uint32 address = 0x00402b00;
char string[8];

sprintf(string, '%u', address);

何か案は?

4

2 に答える 2

2

三つのこと:

  1. 配列には終端の NUL のためのcharスペースが必要なので、少なくとも 9 つの要素 (8 ではなく) にする必要があります。
  2. フォーマット文字列引数はsprintf、二重引用符で囲まれた文字列リテラル (単一引用符で囲まれた文字リテラルではない) である必要があります。
  3. の形式文​​字列は%08x、先頭にゼロが埋め込まれた 8 桁の 16 進数の結果を保証します (%uは埋め込みのない 10 進数です)。

コードは次のようになります。

uint32 address = 0x00402b00;
char string[9];
sprintf(string, "%08x", address);
于 2014-07-14T20:00:12.887 に答える
0

printf (またはsprintf)の「x」変換指定子を使用すると、うまくいくはずです。

0x の部分が不要な場合は、「0x」の部分を省略できます。

コード:

#include <cstdio>

int main() {
    unsigned int address = 0xDEADBEEF;

    printf("Lowercase: 0x%x\n", address);
    printf("Uppercase: 0x%X\n", address);

    return 0;
}

出力:

g++ -O2 -Wall -pedantic -pthread test.cpp && ./a.out

Lowercase: 0xdeadbeef
Uppercase: 0xDEADBEEF
于 2014-07-14T20:03:24.243 に答える