我正在使用内存阅读器来读取文件并将其放入MemoryStream中。 MemoryStream已填充,我正在尝试使用BinaryReader读取,因为文件的字节序更改,因此我使用可以检测字节序的二进制读取器。
当我使用BinaryReader.Read或BinaryReader.ReadString或BinaryReader.ReadByte时,它会读取正确的数据,但是当我使用ReadInt16或其他类似数据时,我得不到正确的数据。是否可以使用它们,我犯了一个错误,或者我应该使用Read()代替?
代码:
MemoryStream ms = new MemoryStream();
object[] binMakerNoteObj = exif.findTag(37500).data;
byte[] binMakerNote = binMakerNoteObj.Cast<byte>().ToArray();
ms.Write(binMakerNote, 0, binMakerNote.Length);
ms.Position = 0;
// Read the header
string t = "";
for(int i = 0; i < 6; i ++)
t += fileStream.ReadChar();
version = fileStream.ReadUInt16();
unknow = fileStream.ReadUInt16();
byteOrder = fileStream.ReadUInt16();