2012-08-10 2 views
3

C 프로그래머에게는 가장 간단한 작업 중 하나 일 수 있지만 실제로 얻을 수는 없습니다.십진수 변환 작업

unsigned char Value[4]; 
unsigned long ulVer = 00010001; 
unsigned long uSize = sizeof(ulVer); 
memcpy(Value, &ulVer, uSize); 
memcpy(&ulVer, Value, uSize); 
printf("%d",ulVer); 

왜 ulVer는 10001이 아닌 4097입니까?

+1

사용해보십시오 :'서명 숯불 값 [를 sizeof (서명 긴)] ' – Nawaz

답변

4

0으로 시작하는 정수 상수는 8 진수 (8 진수)로 간주되기 때문에. 따라서 10001 (8 진수) == 4097 (10 진수).

5

00010001; 0으로 시작하므로 8 진수입니다. 10 진수로 원하는 경우 10001을 써야합니다. C에서

1

, 8 진수 상수가 작동하도록 코드의 경우 0으로 시작, 당신은으로 '값'을 선언해야 10001