gpt4 book ai didi

c - 8 位无符号字符数组到无符号字符

转载 作者:行者123 更新时间:2023-11-30 21:02:57 24 4
gpt4 key购买 nike

我创建了一个函数,将 unsigned char 转换为大小为 8 的 unsigned char 数组(其中每个索引包含 0 或 1,组成给定 char 的 8 位)。这是 100% 工作版本:

unsigned char * ucharToBitArray(unsigned char c)
{
unsigned char * bits = malloc(8);

int i;
for(i=sizeof(unsigned char)*8; i; c>>=1)
bits[--i] = '0'+(c&1);

return bits ;
}

我现在需要创建一个与此完全相反的函数。这意味着,它将获取大小为 8 的 unsigned char 数组,并将其转换为常规的单个 unsigned char。有效的方法是什么?

感谢您的帮助!

最佳答案

该功能不必要地复杂和晦涩。我建议用这个替换它:

void ucharToBitArray(char bits[8], uint8_t c)
{
for(uint8_t i=0; i<8; i++)
{
if(c & (1<<i))
{
bits[7-i] = '1';
}
else
{
bits[7-i] = '0';
}
}
}

现在要将其转换回来,只需以相反的方式即可。检查bits[i]然后设置c |= (1<<i)如果您找到'1' .

关于c - 8 位无符号字符数组到无符号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27241295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com