使用十进制数转换

时间:2012-08-10 12:44:11

标签: c

可能是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?

3 个答案:

答案 0 :(得分:5)

00010001;是一个八进制常量,因为它从0开始。 如果这是你想要的小数,你需要写10001。

答案 1 :(得分:4)

因为以0开头的整数常量被认为是八进制(基数为8)。所以数字10001(八进制)== 4097十进制。

答案 2 :(得分:1)

在C中,八进制常量从0开始。要使代码片段起作用,请尝试使用10001