byte[] to int, float

0

Witam

Mam tablicę byte[] w której są przechowywane różne wartości, tzn dla przykładu w bajtach od 1-4 jest trzymana liczba typu int, w bajcie 5 jest też int, 6-10 liczba typu float, 11-12 int itd.
Do dyspozycji mam numer bajtu początkowego i ilość bajtów składających się na całą liczbę. Nie mam pomysłu na algorytm, który będzie składał te wartości "do kupy". Proszę o jakieś pomysły i porady :)

0

Algorytmem bedzie jedna linia kodu w petli. Uzyj klasy BitConverter.

0

Ale z tego co się orientuję to BitConverter zamienia 4 bajty, a w przypadku kiedy tych bajtów jest mniej to wywala błąd ArgumentOutOfRangeException. Więc nie jest to odpowiedź na mój problem :(

0

Zerknales przynajmniej do dokumentacji? Ja tam widze statyczne metody do konwersji do wiekszosci typow prostych z 2, 4 i 8 bajtowych intow rowniez.

0

A mógłbys podac kod tej tablicy
Nie mam pojęcia jak w tablicy bajtów umieścić zmienne typu int

0

sproboj BitConverter.GetBytes(twojInt);

0

generalnie chodz mi oto, że chce przez socket przesłać ramke danych.
Mysle, że najlepiej zrobic to poprzez tablice byte.
Kiedy mam sztywna tablice, to nie ma kłopotu, ale kiedy chce do niej wkładać zmienne to nie wien jak to robić.
Ramka ma miec nagłówek ( z datą) i dane

Pozdro

0

Mam coś atkiego w jednej klasie:

    const string formatter = "{0,16}{1,20}";

    public static void nowe (int a)
    {
        byte[] byteArray = BitConverter.GetBytes(a);
        Console.WriteLine(formatter, a, BitConverter.ToString(byteArray));
    }

}  

teraz przy podawaniu tablicy "byteArray" do socketu(który jest w innej klasie)

UdpClient klient = new UdpClient(host, port);
Rama z = new Rama();

            Byte[] dane = z.nowe;
            klient.Send(dane, dane.Length);

wyskakuje mi błąd.

Dotyczy to pewnie konwersji, ale nie wiem jak to zrobić?
Prosze o rade

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