2012-05-30 4 views

답변

1

L"0x%x", value을 사용하십시오. 버퍼를 네 가지 요소로만 만드는 것은 나쁜 생각입니다 (value0xF보다 큰 경우). 당신은 반환 값을 저장하고 문자열이 절단되지 않았는지 확인해야합니다 :

int n = swprintf(buff, sizeof buff, L"0x%x", value); 

if (n >= sizeof buff) { /* truncation! */ } 
+0

그것은'buff'가 배열이라고 가정합니다. 포인터라면'sizeof'를 사용할 수 없습니다. –

4

"0x % 03x"와 같은 리터럴에 "0x"가 필요합니다. x 형식은 숫자를 16 진수로 인쇄하기 만하며 0x 장식을 추가하지 않습니다.

+0

http://msdn.microsoft.com/en-us/library/8aky45ct.aspx 플래그 '#이'사용될 때 말한다 o, x 또는 X 형식으로 # 플래그는 0이 아닌 출력 값 앞에 각각 0, 0x 또는 0X를 붙입니다. – Belloc

+2

마법에는 "0이 아닌 출력 값"이 있습니다. 그는 구체적으로 0에 대해 질문했습니다. –

+0

값은 1 자리 16 진수 숫자입니다. 그러나 값이 0이면 원하는 결과를 얻지 못합니다. – Belloc

관련 문제