【发布时间】:2017-12-25 09:34:43
【问题描述】:
我正在尝试从内存映射文件中读取数据,该文件是从 C++ 程序写入内存文件的。我能够使用调试方法并将数据作为循环中的字符串写入。但是,我想将字节数组转换为可以操作的可用字符串。
using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("DataFile"))
{
using (MemoryMappedViewAccessor reader = mmf.CreateViewAccessor())
{
var bytes = new byte[reader.Capacity];
reader.ReadArray<byte>(0, bytes, 0, bytes.Length);
for(int i = 0; i<bytes.Length; i++)
{
System.Diagnostics.Debug.Write((char) bytes[i]);
}
}
}
我尝试删除 for 循环并用 GetString() 编码器替换它,但它只返回一个问号字符而不是完整的数据字符串。
【问题讨论】:
-
看看这篇文章,或许对你有帮助csharpvault.com/blog/memory-mapped-files