如何在C中从字节数组(无符号字符数组)中检索1位
我必须从1字节中检索第一位。 为此,我将整个1字节存储在无符号字符数组中。现在,我按照以下代码检索第一位:如何在C中从字节数组(无符号字符数组)中检索1位,c,C,我必须从1字节中检索第一位。 为此,我将整个1字节存储在无符号字符数组中。现在,我按照以下代码检索第一位: unsigned char byteArray[100]; ..... .....//some code to store 1 byte in byte array //now 1st bit will be: int bit=(int) byteArray[0]; 我只是想确认检索第一位所涉及的步骤是否正确?是否有更好的方法从C中的无符号字符数组(字节数组)中检索单个位。否,数组索引器
unsigned char byteArray[100];
.....
.....//some code to store 1 byte in byte array
//now 1st bit will be:
int bit=(int) byteArray[0];
我只是想确认检索第一位所涉及的步骤是否正确?是否有更好的方法从C中的无符号字符数组(字节数组)中检索单个位。否,数组索引器将返回无符号字符大小的数据,而不是单个位。使用
byteArray[0]&1代码>-屏蔽该值,以便仅获取第一位(取决于哪一端是“第一位”)。另一端是&128
如何(以及为什么)为此目的在字节数组中存储字节?没有必要
在任何情况下,如果要检索字节的第一位,只需执行一位操作
unsigned char byte = <some random value>; // your byte containing the value.
unsigned int first_bit = byte & 1; // for Least significant bit
无符号字符字节=;//包含该值的字节。
无符号整数第一位=字节&1;//最低有效位
操作byte&1
是一个。如果我必须检索MSB,那么它应该是byteArray[7]&128?@很抱歉。我有一个查询endianess是存储从较低地址或较高地址开始的单词。在这种情况下,它将如何影响我的第一位?@Goutham:不,我很确定无符号字符中的最高有效位值为128。您需要整个字节才能到达255。@james:byteArray[0]是第一个字节。byteArray[7]是第8个字节。我认为您误解了数组和索引器的工作方式。@alam Endianness不会影响位的存储方式。字节应始终视为一个数据单元。Endianness只影响字节的顺序。