首页 > 解决方案 > 将整数列表(1 和 0)保存到字节并将数字写入文件

问题描述

我有一个整数列表,var listOfBits = new List<int>();它由整数组成(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...

            }


        }

标签: c#byte

解决方案


您必须使用左移:

exitByte = (exitByte << 1) + 1;

如果值是0那么

exitByte = exitByte << 1;

请注意,这假设最高有效位在前。如果不是这种情况,请反转内部循环,但仍使用左移。

由于您必须在两种情况下(1 和 0)都进行转换,因此这样更容易:

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

推荐阅读