Как преобразовать двойной массив в строку, соответствующую тому же преобразованию, используя memcpy в C++
Я унаследовал существующий код C++, который преобразует массив двойников в строку, записывает его в поле Memo базы данных, а затем может считывать строку из поля memo базы данных и преобразовывать ее в массив двойников. Я хочу написать код c#, который выполняет ту же операцию преобразования массива двойников в строку таким образом, чтобы он был совместим с кодом C++, который преобразует его из строки в двойной массив. Каков правильный код c# для получения одной и той же строки?
Код C++, преобразующий двойной массив в строку:
int numValues = 3; double stations[] = { 1.0,2.0,3.0 }; int blockSize = numValues * sizeof(double); char* mp_memoValue = new char[blockSize + 1]; memcpy(mp_memoValue, (char*)stations, blockSize);
Что я уже пробовал:
byte[] theBytesData = new byte[numBytesReqd]; Buffer.BlockCopy(stations, 0, theBytesData, 0, numBytesReqd); theMemoField = Encoding.ASCII.GetString(theBytesData, 0, theBytesData.Length);
Кроме того, следуя предложенному решению № 1, я сделал следующее, хотя оно не произвело ту же двоичную строку, что и код C++.
Идея использования двоичной копии кажется правильной. Может быть, основной вопрос заключается в том, что делают станции (char*)в C++ и можно ли дублировать это поведение в C#, а затем делать двоичную копию? Возможно, я прошу невозможного, мои знания ограничены.
BinaryFormatter formatter = new BinaryFormatter(); using (MemoryStream m = new MemoryStream()) { formatter.Serialize(m, stations); m.Position = 0; StreamReader sr = new StreamReader(m); theMemoField = sr.ReadToEnd(); }