#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 按位写入。
//ori:要按位写入的数据
//位数:写入数据的位置,从左到右依次为8到1.
//value: 要写入的值
// cnt: 数据占有的位数。
char writeBit(unsigned char ori, int weishu, int value, int cnt)
{
unsigned char backChar = ori;
unsigned char bin[8] = {
0,
};
unsigned char *binCnt = (unsigned char *)malloc(cnt);
memset(binCnt, 0, cnt);
int index = 0;
// 十进制转换为二进制
while (value > 0)
{
bin[index] = value % 2;
index++;
value = value / 2;
}
for (int i = 0; i < index; i++)
{
binCnt[i] = bin[i];
}
for (int i = 0; i < cnt; i++)
{
if (binCnt[cnt - 1 - i]) //如果当前值为1,则写入
{
unsigned char zhi = 1 << (weishu - 1);
backChar = backChar | zhi;
}
weishu--;
}
free(binCnt);
binCnt = NULL;
return backChar;
}
int main()
{
unsigned char temp = 0;
temp = writeBit(temp, 8, 1, 1);
temp = writeBit(temp, 7, 1, 2);
temp = writeBit(temp, 4, 4, 4);
printf("%d %d", temp, temp);
}
c语言实现对字节按位写入
最新推荐文章于 2023-02-13 08:58:32 发布