Alf*_*orm 1 c unsigned integer casting chars
作为我CS课程的一部分,我已经获得了一些功能.其中一个函数接受一个指向无符号字符的指针,将一些数据写入文件(我必须使用这个函数,所以我不能只使用自己的目的构建函数,使用不同的BTW).我需要编写一个整数数组,其值使用此函数可以达到4095(仅使用无符号字符).
但是我认为unsigned char的最大值只有256,因为它长1个字节,我是对的吗?因此,我需要为每个整数使用4个无符号字符?但是,对于整数,转换似乎不适用于较大的值.有没有人知道如何最好地将整数数组转换为无符号字符?
通常一个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)