Ottengo una matrice di byte, ho bisogno di unmarshal su C# struct. Conosco il tipo di struct, ha alcuni campi di stringhe. Le stringhe nell'array di byte appaiono così: due primi byte sono la lunghezza della stringa, quindi la stringa stessa. Non conosco la lunghezza delle corde. Lo so che è Unicode!Come eseguire il marshalling di strutture con campi di stringa di lunghezza sconosciuta in C#
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public class User
{
int Id;//should be 1
String UserName;//should be OFIR
String FullName;//should be OFIR
}
l'array di byte si presenta in questo modo: 00,00,01,00, 00,00,08,00, 4F, 00,46,00,49,00,52,00, 00,00,08,00, 4F, 00,46,00,49,00,52,00,
ho trovato anche questo link con lo stesso problema irrisolto: loading binary data into a structure
Grazie a tutti, Ofir
Ofir, le modifiche suggerite non sono intese come mezzo di comunicazione, se si desidera aggiungere un commento o espandere la domanda sentirsi libero. –
Come si ottiene 1 dall'array di byte? Un 'int' è 4 byte, che sarebbe' {00, 00, 01, 00} ', che non è 1. – Amy
Si prega di consultare la mia 'risposta'. Ho bisogno di più informazioni Conoscere l'array di byte non è abbastanza. Come si presenta la struttura nativa? – Amy