2014-07-14 4 views
0

Я хотел бы преобразовать uint32 в строку char10 для печати. Мой uint32 это адрес, который выглядит как «0x00402B00»Преобразовать адрес uint32 в массив символов

я мог заботиться меньше о предыдущем «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) следует сделать трюк.

Вы можете опустить часть «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 
Смежные вопросы