c# - 将整数列表(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...
}
}
解决方案
您必须使用左移:
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.
}
推荐阅读
- java - 在C中解码Java Base64字符串?
- python - 使用 ffmpeg 剪辑视频时 -to 值小于 -ss 错误
- python - Python Web Crawling with Selenium & Beautiful soup 所有页面(转到下一页)
- react-native - 在 react-native 中使用 GraphQL 的 union 和 apollo-react
- java - 执行每个“何时”步骤 Spock 的操作
- php - 通过在 debian5 上保持 apache 版本相同来更新当前版本的 php
- javascript - 在项目中包含铯
- python - Google 课堂 API 身份验证范围不足
- c# - Azure 中的 ASP.NET Core 1.1 路由
- java - 带有 Cglib 的 Spring Boot 应用程序抛出 InvocationTargetException