我有以下问题。当我逐字节读取文件并将信息存储在BitArray中时。以下BitArray没有文件的真正二进制表示。
这是我的函数,它读取文件并将其转换为BitArray:
public BitArray Read(string fileName){
byte[] data;
using (Stream fs = File.OpenRead(fileName)) {
data = new byte[fs.Length];
fs.Read(data, 0, data.Length);
}
BitArray bitmap = new BitArray (data);
return bitmap;
}
答案 0 :(得分:1)
你的问题是BitArray首先通过最低有效位迭代字节,因为它是一个位数组。
从this example on MSDN查看myBA3位数组的输出。您可以在BitArray构造函数MSDN article中找到有关字节数组的更多信息。
请注意BitArray的ctor中的注释采用字节数组。你会看到它说:每个字节的最低有效位代表最低的索引值这意味着如果你添加一个字节数组[0x01,0x80],迭代位数组将导致1000 0000 0000 0001,与每个字节中的位表示完全相反。