2014-07-14 236 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