2012-08-10 49 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是4097而不是10001?

+1

你應該申報'Value'爲:'無符號字符值[的sizeof(無符號長)]; ' – Nawaz 2012-08-10 12:49:37

回答

4

因爲以0開頭的整數常量被認爲是八進制(基數8)。所以數字10001(八進制)==十進制中的4097。

5

00010001;是一個八進制常量,因爲它以0開頭。 如果這就是你想要的十進制數,你需要編寫10001。

1

在C,八進制常數從0開始,您的代碼段工作,請嘗試使用10001