为什么这个内存映射文件没有正确读取?

时间:2013-01-15 01:04:22

标签: c# memory-mapped-files

我有一种感觉我做错了什么,但我不确定是什么。

这是我的代码:

        long offset = 0x009694E3;
        long length = 0x02;
        byte[] bytes = new byte[length];

        // Create the memory-mapped file.
        using (var mmf =
            MemoryMappedFile.CreateFromFile(strFileName, FileMode.Open, "ISO"))
        {
            // Create a random access view, from the 256th megabyte (the offset)
            // to the 768th megabyte (the offset plus length).
            using (var accessor = mmf.CreateViewAccessor(offset, length))
            {
                // Make changes to the view.
                for (long i = 0; i < length; i++)
                {
                    bytes[i] = accessor.ReadByte(i);
                    dialogEdit.Text = bytes[i].ToString();
                }
            }
        }

当我加载文件时,上面偏移的文本是0x22 0x44(“ASCII中的D”),但文本框的输出是“68”......

我认为我误解了字节是如何工作的,但我并不完全确定......

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

在文本框中,在第二个循环中用值68(0x44)覆盖值34(0x22)。

您的程序在编程时正常工作。内存映射文件的幸运逃生。