可能是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?
可能是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?
因爲以0開頭的整數常量被認爲是八進制(基數8)。所以數字10001(八進制)==十進制中的4097。
00010001;是一個八進制常量,因爲它以0開頭。 如果這就是你想要的十進制數,你需要編寫10001。
在C,八進制常數從0開始,您的代碼段工作,請嘗試使用10001
你應該申報'Value'爲:'無符號字符值[的sizeof(無符號長)]; ' – Nawaz 2012-08-10 12:49:37