如何通过为每个位分配值来形成字符字节?

时间:2011-03-28 14:26:22

标签: c

我有一个接受角色的C函数。我需要提取插入该字符的位。我很清楚提取部分。谁能让我知道如何将值插入位?

5 个答案:

答案 0 :(得分:3)

非常模糊的问题,我建议你刷新按位运算符。这应该指向正确的方向。

http://www.cprogramming.com/tutorial/bitwise_operators.html

答案 1 :(得分:2)

既然您要求提出想法而不是确切的实施:

这是你可以做的,

迭代每一位并根据需要进行设置。

您可以设置第n位(0索引如下)

byteVal = byteVal | (1<<N);

答案 2 :(得分:1)

如果要将字符中的第N位设置为1,则需要OR将值1向右移动N位:

c |= 1 << N;

答案 3 :(得分:1)

假设您要检查字符的第n位:

int checkBit(char c, int n) {
    return c & (1 << n);
}

设置第n位:

void setBit(char *c, int n) {
    *c |= 1 << n;
}

答案 4 :(得分:1)

当然,只需求助于二元操作。以下函数应该完全符合您的要求,但使用简单的界面:

char set8 (char ch, int index) {
   if (index >= 1 && index <= 8) {
        return (char)(ch | (1 << index - 1));
   }
   return ch;
}

int n = 0;

set8(n, 1); // Returns 1
set8(n, 2); // Returns 2
set8(n, 3); // Returns 4

...

set8(n, 9); // Returns n (0)

该函数使用按位或切换指定的位。如果指定的索引超出了一个字节(8位)的范围,那么它只返回传入的字符。