将uint32地址转换为char数组

时间:2014-07-14 19:33:19

标签: arrays string casting char uint32

我想将uint32转换为char字符串以进行打印。我的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);

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

三件事:

  1. char数组需要有终止NUL的空间,所以它应该至少有9个元素(不是8个)。
  2. sprintf格式字符串参数必须是双引号字符串文字(不是单引号字符文字)。
  3. 格式字符串%08x将确保8位数,前导零填充的十六进制结果(%u是未填充的十进制数。)
  4. 代码应为:

    uint32 address = 0x00402b00;
    char string[9];
    sprintf(string, "%08x", address);
    

答案 1 :(得分:0)

使用" x"来自printf(或sprintf)的转换说明符应该可以解决问题。

你可以省略" 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