Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中从字节数组(无符号字符数组)中检索1位_C - Fatal编程技术网

如何在C中从字节数组(无符号字符数组)中检索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中的无符号字符数组(字节数组)中检索单个位。否,数组索引器

我必须从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中的无符号字符数组(字节数组)中检索单个位。

否,数组索引器将返回无符号字符大小的数据,而不是单个位。使用
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只影响字节的顺序。