Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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和0)保存到字节,并将数字写入文件_C#_Byte - Fatal编程技术网

C# 将整数列表(1和0)保存到字节,并将数字写入文件

C# 将整数列表(1和0)保存到字节,并将数字写入文件,c#,byte,C#,Byte,我有一个整数列表var listOfBits=新列表;它由整数1000 1100 0000 1110 0100…组成。。。。这些位表示二进制数。现在我需要把号码写进一个文件。但我有点困了。我是这么想的: void writeFile(List<int> listOfBits) { for (int i = 0; i < listOfBits.Count; i += 8) { byte

我有一个整数列表var listOfBits=新列表;它由整数1000 1100 0000 1110 0100…组成。。。。这些位表示二进制数。现在我需要把号码写进一个文件。但我有点困了。我是这么想的:

void writeFile(List<int> listOfBits)
        {
            for (int i = 0; i < listOfBits.Count; i += 8)
            {
                byte exitByte= 0;
                for(int j=0; j < 8; j++)
                {
                    if (listOfBits[i + j] == 1)
                    {
                        //some kind of right shift maybe?
                    }
                }
                  //write exitByte to file...

            }


        }

您必须使用左移:

exitByte = (exitByte << 1) + 1;
请注意,这假设最高有效位位于第一位。如果不是这样,则反转内循环,但仍使用左移

由于在1和0两种情况下都必须进行移位,因此更容易如下所示:

exitByte <<= 1; // Shift left by 1 position, i.e., multiply by 2.
if (listOfBits[i + j] == 1)
{
    exitByte++; // Add one.
}
exitByte <<= 1; // Shift left by 1 position, i.e., multiply by 2.
if (listOfBits[i + j] == 1)
{
    exitByte++; // Add one.
}