Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.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# 如何从字节中获取子位作为单独的整数值?_C#_C++_C_Byte_Bit - Fatal编程技术网

C# 如何从字节中获取子位作为单独的整数值?

C# 如何从字节中获取子位作为单独的整数值?,c#,c++,c,byte,bit,C#,C++,C,Byte,Bit,例如,我有byte=245。我想从中获取任意数量的子比特,并将其转换为整数。我怎么能做到? 例如,我需要2到5位或0到2、5到7的值 任何基于C语言的解决方案都可以 目前我使用此函数获取单个位: public bool GetBitFromByte(byte b, byte bit_index_0_7) { var bit = (b & (1 << bit_index_0_7)) != 0; return bit; } public bool GetBit

例如,我有byte=245。我想从中获取任意数量的子比特,并将其转换为整数。我怎么能做到? 例如,我需要2到5位或0到2、5到7的值

任何基于C语言的解决方案都可以

目前我使用此函数获取单个位:

public bool GetBitFromByte(byte b, byte bit_index_0_7)
{
    var bit = (b & (1 << bit_index_0_7)) != 0;

    return bit;
}
public bool GetBitFromByte(字节b,字节位索引0)
{
变量位=(b&(10)
比特数++;
字节[]VAL=新字节[位/金额/8];
对于(int i=0;iValuaP>这叫做掩蔽。你把这些位指定为两个幂(例如C++中,<代码> 1)。这叫做掩蔽。(例如,在C++中,<代码> 1,你尝试了什么,为什么它不能工作?请给出输入、预期输出和实际输出的例子。@ WeeVave-我发布了我目前拥有的。我在寻找一个更简单的方法,没有垃圾代码。抱歉,这不是C问题。我很惊讶,你的代表的一个成员问了这么一个微弱的问题和垃圾邮件标签。在C中工作的东西也会在C中工作。我需要任何解决方案。我甚至可以在C中创建DLL并在C下加载。它在C中不工作。它不是C代码。你尝试过什么,为什么不工作?请给出输入、预期输出和实际输出的示例。@WeatherVane-我发布了我目前拥有的东西。我正在寻找一种更简单的没有垃圾的方法代码。抱歉,这不是一个C问题。我很惊讶你的代表的一个成员问了这么弱的问题和垃圾标签。在C中工作的东西也会在C中工作。我需要任何解决方案。我甚至可以在C上创建DLL并将其加载到C下。它在C中不工作。它不是C代码。谢谢。我会尝试这样做。例如:
int result=input&((1谢谢你。我会试着做的。例如:
intresult=input&((1
public static byte[] GetBytesFromBits(bool[] bits)
{
    int bits_amount = bits.Length;

    while (bits_amount % 8 > 0)
        bits_amount++;

    byte[] vals = new byte[bits_amount / 8];

    for (int i = 0; i < bits.Length; i += 8)
    {
        byte val = 0;

        for (int j = i; j < i + 8 && j < bits.Length; j++)
        {
            val <<= 1;
            if (bits[j]) val |= 1;
        }

        vals[i / 8] = val;
    }

    return vals;
}