I'm fooling around in VS this morning after had no sleep:
private static unsafe string CToString(char charPtr, int startIndex)
fixed (char* c = &charPtr[startIndex]) return new string(c);
This takes the char array and an integer as parameters, and with that char array, converts it to a char* based on a start index specified by the second param, in order to take the address of a char which is considered an unfixed expression, you'll notice that I've put it into the fixed statement (this would be required otherwise you get a compiler error). From there we use the string constructor which requests a char* and return it.
This returns the string value of each char afterwards from then on based on the specified startIndex.
Note: If this char value is a value of 0, it will terminate itself at that point when returning the string. (I'll show an example to show you what I mean.)
To test my function, here's a test snippet inside of a button click: