2014-07-14 178 views
0

我想将uint32转换为char字符串以用于打印目的。我的uint32是一个类似于“0x00402B00”的地址将uint32地址转换为char数组

我可以不在意前面的“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); 

任何想法?

回答

1

三件事:

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

的代码应该是:

uint32 address = 0x00402b00; 
char string[9]; 
sprintf(string, "%08x", address); 
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