这段代码发生了什么?

use*_*312 3 c endianness bitwise-operators

有人可以帮我解释一下代码吗?

为何32位UINT

为什么0xff

这里有4个正确的转变吗?

int writeUINT32little(FILE *f, UINT32 i)
{    
    int rc;    
    rc = fputc((i & 0xff), f);    
    if (rc == EOF)       return rc;    
    rc = fputc(((i >> 8) & 0xff), f);    
    if (rc == EOF)       return rc;    
    rc = fputc(((i >> 16) & 0xff), f);    
    if (rc == EOF)       return rc;    
    return fputc(((i >> 24) & 0xff), f);
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 8

这需要一个32位无符号整数,并将其输出到一个文件,逐字节,最低有效字节(即little-endian).

0xff是以255十进制或11111111二进制形式写入的十六进制方式.并且&是按位and功能.放在一起,(i & 0xff)屏蔽整数的最低有效字节.

然后,移位将整个事物移位8位,并重复该过程以打印下一个字节.