It looks like this is a little-endian UTF-16, so you want Encoding.Unicode :
string text = Encoding.Unicode.GetString(bytes);
Usually you should not assume what encoding is - it should be what you know about data. For other encodings, you obviously use different instances of Encoding , but Encoding is the right class for binary representations of text.
EDIT: As noted in the comments, it seems to you that “00” is missing either from the beginning of your byte array (in this case you need Encoding.BigEndianUnicode ) or from the end (in this case only Encoding.Unicode fine).
(When it comes to the opposite, accepting arbitrary binary data and presenting it as text, you should use hex or base64. This is not the case, but you should know about it.)
Jon skeet
source share