将内存映射文件读取到字符串

问题描述 投票:0回答:1

我试图从内存映射文件中读取数据,该文件从C ++程序写入内存文件。我能够使用debug方法并将数据作为循环中的字符串写入。但是,我想将字节数组转换为可以操作的可用字符串。

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()编码器替换它,但它只返回一个问号字符而不是完整的数据字符串。

c# memory-mapped-files
1个回答
3
投票

只要您知道使用此编写字节的编码很容易,您可以使用例如System.Text.UTF8Encoding类(可能是System.Text.Encoding.UTF8实例)和GetString方法:

string str = System.Text.Encoding.UTF8.GetString(bytes, 0, bytes.Length);

如果您不知道编码这会变得更加困难,您将不得不尝试使用启发式方法并猜测编码实际上是什么。

© www.soinside.com 2019 - 2024. All rights reserved.