我尝试将unsigned long int转换为char
但我有一些错误
int main(void)
{
unsigned char pdest[4];
unsigned long l=0xFFFFFFFF;
pdest[0] = l & 0xFF;
pdest[1] = (l >> 8) & 0xFF;
pdest[2] = (l >> 16) & 0xFF;
pdest[3] = (l >> 24) & 0xFF;
unsigned long int l1=0;
l1 |= (pdest[0]);
l1 |= (pdest[1] << 8);
l1 |= (pdest[2] << 16);
l1 |= (pdest[3] << 24);
printf ("%lu",l1);
}
和输出是
18446744073709551615
不是4294967295?
如何正确执行?
最佳答案
读这个:
https://en.wikipedia.org/wiki/C_data_types
...长无符号整数类型。至少可以包含[0,
4,294,967,295]范围;