[C#] rzutowanie double na tablice bajtów

0

Chce przesłać dane typu double przez sieć. klient udp pobiera w metodzie send tablice byte[] więc trzeba najpierw te double rzutować jakoś na tę tablice bajtów (osiem bajtów na każdego double z tego co się orientuje). W C byłoby to szalenie proste jednak w 'genialnym' C# nie mam pojęcia jak to zrobić. Podejrzewam, że trzeba użyć pewnych wbudowanych metod jednak nie mogę znaleźć takowych. Proszę o pomoc.

pozdrawiam

0

double z = 123;
byte[] tab_of_bytes = BitConverter.GetBytes(z);

chyba tak.

potem w druga strone
uzyjemy
z=BitConverter.ToDouble(tab_of_bytes);

0

Dzięki to powinno działać. Jeszcze tylko myślę nad optymalizacją tej procedury, mianowicie chce żeby te double były umieszczone w jednej, większej tablicy bajtów jeden za drugim (tak będzie najwygodniej je wysłać), domyślam się, że funkcja którą podałeś zwraca referencje na nowo utworzoną tablice bajtów o długości 8, teraz jeżeli chce je wstawić do tej większej tablicy w pewnym miejscu to czy najlepszym rozwiązaniem jest kopiowanie wartości indeks po indeksie czy istnieje coś bardziej optymalnego?

Jeszcze jedno przemyślenie mi się nasunęło: czy C# stosuje taki sam format liczy zmiennoprzecinkowej double jak C++? Czy jeżeli te bajty odczytam programem napisanym w C++ to czy zinterpretuje je on tak samo jak program który je wysyłał?

0

Na pierwszy problem chyba znalazłem rozwiązanie, wystarczy użyć metody CopyTo. W sumie i tak to pewnie polega na kopiowaniu elementów indeks po indeksie, ale kod jest bardziej przejrzysty.

0

Zrób to na MemoryStream (tzn wrzucaj kolejne double skonwertowane do bajtów do streama, potem wystarczy .ToArray() albo GetBuffer czy coś takiego )

1 użytkowników online, w tym zalogowanych: 0, gości: 1