【问题标题】:Read memory mapped file to string将内存映射文件读入字符串
【发布时间】: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() 编码器替换它,但它只返回一个问号字符而不是完整的数据字符串。

【问题讨论】:

标签: c# memory-mapped-files


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    相关资源
    最近更新 更多