System.Text.Encoding.UTF8.GetString takes the bytes as raw Unicode and creates a string from that. Totally not what you want. Use this function instead:
public static string ByteArrayToDecimalString(byte[] ba)
{
StringBuilder hex = new StringBuilder();
string format = "{0}";
foreach (byte b in ba)
{
hex.AppendFormat(format, b);
format = " {0}";
}
return hex.ToString();
}