將MFC CArray序列化並保存到數據庫。我需要將這些數據讀入C#項目。我能夠從數據庫中以字節[]的形式檢索數據。然後我將byte []寫入MemoryStream。現在我需要從MemoryStream讀取數據。在C中讀取序列化的MFC CArray#
有人顯然已經解決了這個問題,但沒有寫出他們的解決方案。
http://social.msdn.microsoft.com/Forums/eu/csharpgeneral/thread/17393adc-1f1e-4e12-8975-527f42e5393e
我跟着這些項目,試圖解決這個問題。
http://www.codeproject.com/Articles/32741/Implementing-MFC-Style-Serialization-in-NET-Part-1
http://www.codeproject.com/Articles/32742/Implementing-MFC-Style-Serialization-in-NET-Part-2
在字節[]中的第一件事情是該陣列的尺寸,並且我可以檢索與binaryReader.readInt32()。但是,我似乎無法取回浮點值。如果我嘗試binaryReader.readSingle()或
public void Read(out float d) {
byte[] bytes = new byte[4];
reader.Read(bytes, m_Index, 4);
d = BitConverter.ToSingle(bytes, 0);
}
我不回收正確的數據。我錯過了什麼?
編輯下面是序列化數據
typedef CArray<float, float> FloatArray;
FloatArray floatArray;
// fill floatArray
CSharedFile memoryFile(GMEM_MOVEABLE | GMEM_ZEROINIT);
CArchive ar(&memoryFile, CArchive::store);
floatArray.Serialize(ar);
ar.Close();
EDIT 2
通過落後讀書,我能得到所有彩車的C++代碼,並且還能夠確定CArray的大小是byte [2]還是Int16。有誰知道這是否總是如此?
您確定數據保存爲單個而不是雙倍,例如? – 2012-02-19 16:38:18
查看我的編輯,瞭解如何在C++代碼中對數據進行序列化。謝謝! – kdrag136 2012-02-19 16:51:28