Comprimento da string ao converter de uma matriz de caracteres

Estou tendo sérios problemas com o manuseio de cordas. Como meus problemas são difíceis de descrever, começarei com algum código de demonstração que os reproduz:

Dim s1 As String = "hi"
Dim c(30) As Char
c(0) = "h"
c(1) = "i"
Dim s2 As String = CStr(c)
s2 = s2.Trim()
If not s1 = s2 Then
   MsgBox(s1 + " != " + s2 + Environment.NewLine + _
          "Anything here won't be printed anyway..." + Environment.NewLine + _ 
          "s1.length: " + s1.Length.ToString + Environment.NewLine + _
          "s2.length: " + s2.Length.ToString + Environment.NewLine)
End If                    

O resultado messagebox fica assim:

A razão pela qual essa comparação falha é que s2 tem o comprimento 31 (de, o tamanho original da matriz) enquanto s1 tem o comprimento 2.

Eu me deparo com esse tipo de problema com bastante frequência ao ler informações de cadeia de caracteres a partir de matrizes de bytes, por exemplo, ao manipular ID3Tags de MP3s ou outras informações codificadas (ASCII, UTF8, ...) com tamanho pré-especificado.

Existe alguma maneira rápida e limpa de evitar esse problema?

Qual é a maneira mais fácil de "aparar" s2 para a string mostrada pelo depurador?

Agradecemos antecipadamente, Janis

questionAnswers(4)

yourAnswerToTheQuestion