1

我想将 a 转换uint32char字符串以进行打印。我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 位、前导零填充的十六进制结果(%u是未填充的十进制)。

代码应该是:

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 回答