Konwersja byte[] na byte*

0

Mam skompresować dane w bloku pamięci przy użyciu DLL:
przykład kodu

class Program
    {
        [DllImport("Dll.dll")]
        unsafe static extern void Fill(byte value, byte* ptr);

        static void Main(string[] args)
        {
            byte[] array = new byte[1000];
        }
    }

Znalazłem http://stackoverflow.com/questions/537573/how-to-get-intptr-from-byte-in-c-sharp
co wybrać? kopiowanie z Marshal.Copy czy GCHandleType.Pinned czy unsafe fixed. Bloki nie będą duże, po 64 kiB, ale może ich być dużo, będzie kompresja bloków w pamięci.

1

Nie tędy droga. Pozwól dotnetowi zająć się tą tablicą automatycznie, tak że parametrem funkcji będzie byte[] ptr.

Tylko musisz sprecyzować, czy to ma być bufor wejściowy, wyjściowy czy w obie strony, i jaki jest jego rozmiar.

Poczytaj też tutaj:
https://msdn.microsoft.com/en-us/library/z6cfh6e6%28v=vs.110%29.aspx

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