可能是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 :(得分:5)
00010001;是一个八进制常量,因为它从0开始。 如果这是你想要的小数,你需要写10001。
答案 1 :(得分:4)
因为以0开头的整数常量被认为是八进制(基数为8)。所以数字10001(八进制)== 4097十进制。
答案 2 :(得分:1)
在C中,八进制常量从0开始。要使代码片段起作用,请尝试使用10001