Szukam jakiegoś prostego sposobu na kompresje bezstratną tablicy double[,] i zapisanie do pliku.
- Rejestracja:prawie 17 lat
- Ostatnio:około 14 lat
0
na dzień dzisiejszy używam czegoś takiego:
List<byte> list = new List<byte>();
for (int i = 0; i < rozmiar; i++)
{
list.AddRange(BitConverter.GetBytes(l1d[i]));
}
for (int i = 0; i < rozmiar; i++)
{
list.AddRange(BitConverter.GetBytes(a1d[i]));
}
for (int i = 0; i < rozmiar; i++)
{
list.AddRange(BitConverter.GetBytes(b1d[i]));
}
MemoryStream memoryStream = new MemoryStream();
GZipStream zipStream = new GZipStream(memoryStream, CompressionMode.Compress);
zipStream.Write(list.ToArray(), 0, list.Count);
FileStream fileStream = new FileStream("plik.rrr", FileMode.Create);
fileStream.Write(memoryStream.GetBuffer(), 0, (int)memoryStream.Position);
fileStream.Close();
ale poszukuje jakiegos lepszego sposobu.
- Rejestracja:prawie 17 lat
- Ostatnio:około 14 lat
0
somekind napisał(a)
No ale skoro sam się domyślasz, co jest źle, to czemu tego nie zmienisz?
ponieważ nie wiem co mogę poprawić i raczej pytałem bo liczyłem na jakieś całkiem inne rozwiązanie.
johny_bravo napisał(a)
Czym jest l1d, a1d i b1d?
to sa double[]

- Rejestracja:około 17 lat
- Ostatnio:około 2 godziny
- Lokalizacja:Wrocław
0
Hmm...
Nie wiem, czy jest sens kompresji do strumienia w pamięci, a potem zapisywania go na dysk. Ale na wszelki wypadek zakomentowana część kodu tak właśnie robi.
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
namespace DoubleCompresionTest
{
class Program
{
static void Main(string[] args)
{
string path = @"D:\double.bin";
double[] pamparampam = new double[] { 7, 29, 666 };
byte[] bytes = new byte[pamparampam.Length * sizeof(double)];
Buffer.BlockCopy(pamparampam, 0, bytes, 0, bytes.Length);
//using (MemoryStream ms = new MemoryStream())
//{
// using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress))
// {
// zip.Write(bytes, 0, bytes.Length);
// }
// File.WriteAllBytes(path, ms.ToArray());
//}
using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
{
using (GZipStream zip = new GZipStream(fs, CompressionMode.Compress))
{
zip.Write(bytes, 0, bytes.Length);
}
}
}
}
}