在C中将无符号整数转换为字节数组

Thi*_*Thi 3 c arrays int

你能解释一下如何将最后3个字节的数据从无符号整数转换成字符数组吗?

例:

unsigned int unint = some value;
unsigned char array[3];
Run Code Online (Sandbox Code Playgroud)

Set*_*gie 5

如果你必须将它转换为数组更难,但如果你只想访问单个字节,那么你可以做

char* bytes = (char*)&unint;
Run Code Online (Sandbox Code Playgroud)

如果你真的想制作一个数组(并因此制作最后3个字节的副本,而不是留下它们),你可以这样做

unsigned char bytes[3]; // or char, but unsigned char is better

bytes[0] = unint >> 16 & 0xFF;
bytes[1] = unint >> 8  & 0xFF;
bytes[2] = unint       & 0xFF;
Run Code Online (Sandbox Code Playgroud)


oua*_*uah 5

您可以使用按位右移运算符:

array[0] = unint;
array[1] = unint >> 8;
array[2] = unint >> 16;
Run Code Online (Sandbox Code Playgroud)

最不重要的字节uint存储在数组的第一个元素中.