2014-07-14 2 views
0

인쇄용으로 uint32char 문자열로 변환하고 싶습니다. 내 uint32은 "0x00402B00"과 같은 주소입니다.uint32 주소를 문자 배열로 변환

이전의 "0x"에 대해서는 신경 쓸 일이 없지만 그 것이 있으면 상관 없습니다.

string[0] = 0 
string[1] = 0 
string[2] = 4 
string[3] = 0 
string[4] = 2 

.... 등등 :

어떻게 어디 char 문자열로이 번호를 설정할 수 있습니다. 이 작품 같은

윌 무엇인가?

uint32 address = 0x00402b00; 
char string[8]; 

sprintf(string, '%u', address); 

어떤 아이디어?

답변

1

세 가지 :

  1. char 배열 착신 NUL 공간을 가질 필요가 있으므로, 적어도 9 개 요소 (되지 8)이어야한다.
  2. sprintf 형식 문자열 인수는 큰 따옴표가있는 문자열 리터럴 (작은 따옴표없는 문자 리터럴이 아님)이어야합니다.
  3. 형식 문자열 %08x은 8 자리, 0으로 채워진 16 진수 결과 (%u은 패딩되지 않은 10 진수)를 보장합니다.

코드가 있어야한다 :

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