运行非预期:
unsigned char aa[5] = {0xcc, 0xc8, 0x1e, 0xbd, 0x81};
unsigned __int64 valLong = aa[4];
valLong = valLong<<32;
printf("valLong = %I64u\n",valLong);
valLong += aa[3]<<24;
valLong += aa[2]<<16;
valLong += aa[1]<<8;
valLong += aa[0];
printf("long = %I64u sizeof(unsigned __int64)=%d\n", valLong, sizeof(__int64));
0x81 输出0x80;
运行预期:
unsigned char aa[5] = {0xcc, 0xc8, 0x1e, 0xbd, 0x81};
unsigned __int64 valLong = aa[4];
valLong = valLong<<32;
printf("valLong = %I64u\n",valLong);
u32 *pU32 = (u32*)(aa);
valLong += *pU32;
printf("long = %I64u sizeof(unsigned __int64)=%d\n", valLong, sizeof(__int64));
输出正确。
那位大侠指点一二。。。。