Pregunta

(para Wysiwyg quiero decir que yo decidir QUÉ está escrito y CÓMO Está escrito, y no alguien en Microsoft o en Google) (ok ... técnicamente no decido nada ... alguien que programó hace algunos años decidió, y solo puedo preguntar cuánto tengo que saltar)

Hoy me siento un poco estúpido, pero ya he perdido dos horas buscando la solución :-(.

Ahora...

Tengo un protocolo binario. Está basado en C, por lo que es como mirar una estructura C donde se define la endianness de la máquina (y afortunadamente es lo mismo que la endianness "local"), se define el tamaño de los diversos tipos, se define la alineación de la estructura de datos, Se define el diseño de la estructura, las cadenas son matrices fijas de caracteres en una codificación de conocimiento ... ¡todo está definido! Y todo es muy similar a una C# unsafe struct Cuando estás usando [(LayoutKind.Explicit)] y no eres muy exigente con el uso de fixed Modificador para matrices. Ahora necesito serializarlo/deserializarlo en C#... he mirado a su alrededor pero no pude encontrar nada ... ¿qué me he perdido? Antes de preguntar, sé de BinaryFormatter, pero no es lo suficientemente wysiwyg para mí ... BinaryFormatter implementa su lenguaje de formato. Sí, sé de BitConverter (Y del hecho de que no implementa los convertidores para Big-Endian), pero no es una solución "completa". Es solo el instrumento "base". Y yo que conozco BinaryWriter/BinaryReader, pero no parecen admitir matrices que no byte[] o char[] y no parecen ser capaces de "rellenar" una matriz en la escritura (tienes 5 elementos byte[] matriz y necesitas escribirlo como 10 elementos byte[] matriz porque el formato que está usando lo requiere ... Debe escribir líneas de código para hacer esto)

El plan B (pero tal vez incluso el Plan Z) es crear una sombra unsafe struct Para cada clase, un IWysiwygSerializable interfaz con dos métodos (Read y Write) e implementar la interfaz en cada clase (la escritura poblaría la unsafe struct y escribirlo en el flujo de salida, la lectura haría lo contrario) (o incluso podría hacer directamente algunas decenas de BitConverter en el Read y Write sin usar el struct, pero para las matrices es un poco más difícil)

¡Gracias!

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top