Pergunta

Eu preciso para processar os bytes [] quando eu recebo de aplicação externa. A aplicação externa também é feito em C # e eles enviar os bytes através de UDP. Eles estão enviando os bytes convertido de struct qual está demonstrada abaixo:

public struct DISPATCH_MESSAGE
{
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
    public char[] federation_name; // Units: nil     Range: nil
}

Então, quando eu chegar os bytes, eu preciso tirar o char [] dentro disso, e obter a seqüência fora desse char [].

Eu sou novo para este tipo de não gerenciado codificação.

Foi útil?

Solução

Provavelmente você deve declará-lo como ByValTStr (dependendo da natureza da corda, que poderia ser diferente):

 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
 public struct DISPATCH_MESSAGE{ 
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]   
    public string federation_name; 
 }

UPDATE: Se ele já está dando um char[], é provavelmente fazendo a conversão necessária (inclui codificação de manipulação) corretamente, então eu acho que você só precisa:

string str = new string(instance.federation_name);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top