How can I convert a byte array to a string array?
===

Just to clarify something first. I am **not** trying to convert a byte array to a single string. I am trying to convert a byte-array to a string-array.

I am fetching some data from the clipboard using the `GetClipboardData` API, and then I'm copying the data from the memory as a byte array. When you're copying multiple files (hence a `CF_HDROP` clipboard format), I want to convert this byte array into a string array of the files copied.

Here's my code so far.

    //Get pointer to clipboard data in the selected format
    var clipboardDataPointer = GetClipboardData(format);

    //Do a bunch of crap necessary to copy the data from the memory
    //the above pointer points at to a place we can access it.
    var length = GlobalSize(clipboardDataPointer);
    var @lock = GlobalLock(clipboardDataPointer);

    //Init a buffer which will contain the clipboard data
    var buffer = new byte[(int)length];

    //Copy clipboard data to buffer
    Marshal.Copy(@lock, buffer, 0, (int)length);

    GlobalUnlock(clipboardDataPointer);

    snapshot.InsertData(format, buffer);

Now, here's my code for reading the buffer data afterwards.

    var formatter = new BinaryFormatter();
    using (var serializedData = new MemoryStream(buffer))
    {
        paths = (string[]) formatter.Deserialize(serializedData);
    }

This won't work, and it'll crash with an exception saying that the stream doesn't contain a binary header. I suppose this is because it doesn't know which type to deserialize into.

I've tried looking the `Marshal` class through. Nothing seems of any relevance.