如果整数大于256,如何在C中将整数转换为unsigned char?

Alf*_*orm 1 c unsigned integer casting chars

作为我CS课程的一部分,我已经获得了一些功能.其中一个函数接受一个指向无符号字符的指针,将一些数据写入文件(我必须使用这个函数,所以我不能只使用自己的目的构建函数,使用不同的BTW).我需要编写一个整数数组,其值使用此函数可以达到4095(仅使用无符号字符).

但是我认为unsigned char的最大值只有256,因为它长1个字节,我是对的吗?因此,我需要为每个整数使用4个无符号字符?但是,对于整数,转换似乎不适用于较大的值.有没有人知道如何最好地将整数数组转换为无符号字符?

nos*_*nos 5

通常一个unsigned char保存8位,最大值为255.如果你想知道你的特定编译器,打印掉CHAR_BIT和UCHAR_MAX <limits.h> 你可以提取32位int的各个字节,

#include <stdint.h>

void
pack32(uint32_t val,uint8_t *dest)
{
        dest[0] = (val & 0xff000000) >> 24;
        dest[1] = (val & 0x00ff0000) >> 16;
        dest[2] = (val & 0x0000ff00) >>  8;
        dest[3] = (val & 0x000000ff)      ;
}


uint32_t
unpack32(uint8_t *src)
{
        uint32_t val;

        val  = src[0] << 24;
        val |= src[1] << 16;
        val |= src[2] <<  8;
        val |= src[3]      ;

        return val;
}
Run Code Online (Sandbox Code Playgroud)