C# 如何从字节中获取子位作为单独的整数值?
例如,我有byte=245。我想从中获取任意数量的子比特,并将其转换为整数。我怎么能做到? 例如,我需要2到5位或0到2、5到7的值 任何基于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
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;i ValuaP>这叫做掩蔽。你把这些位指定为两个幂(例如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;
}