7
votes

Binaryformatter avec la question de MemorMemeam

Je teste BinaryFormatter pour voir comment cela fonctionnera pour moi et j'ai une question simple:

Lorsque vous l'utilisez avec la chaîne Bonjour, et je convertitons la mémoire Mémoire en une matrice, elle me donne 29 dimensions, avec cinq d'entre eux étant les données réelles vers la fin des dimensions: xxx

retours xxx

y a un moyen de renvoyer les données codées sous forme d'octets sans toutes les informations étrangères?


0 commentaires

5 Réponses :


2
votes

Pour une chaîne simple, utilisez un binarywriter. La surcharge sera réduite à un préfixe de petite longueur.

BinaryFormatter est destiné aux grappes d'objets sérialisés (complexes) et nécessite des structures de données auxiliaires pour le faire.


0 commentaires

2
votes

Cela dépend de ce que vous voulez réellement. Vous pouvez obtenir un tableau d'octet UTF8 d'une chaîne avec encoding.Utf8.getBytes.


0 commentaires

2
votes

Vous ne devriez pas supprimer toute cette information "superfurée". Le désérialiseur en a besoin de l'autre extrémité lorsque vous souhaitez reconstituer l'objet des données sérialisées.


0 commentaires

2
votes

essayez-vous simplement de convertir la chaîne en une matrice d'octets? Si tel est votre objectif, vous pouvez faire quelque chose de plus comme: xxx


0 commentaires

6
votes

Toutes ces informations étrangères indiquent à l'autre formateur binaire (qui désérialisera l'objet) ce que type d'objet est désérialisé (dans ce cas, system.string ). Selon le type, il inclut d'autres informations nécessaires pour reconstruire l'objet (par exemple, s'il s'agissait d'un StringBuilder , la capacité serait également encodé là-bas.

Si tout ce que vous voulez faire, c'est truc d'une chaîne dans un mémoire tampon Morthstream : xxx


1 commentaires

Remarque: le constructeur Streamwriter crée en interne une instance de utf8encoding pour effectuer la conversion réelle en octets. Si tout ce dont vous avez besoin est un tableau d'octets correspondant à une chaîne, alors Morthstream et TextWriter ne sont pas réellement la solution - ils sont juste un moyen de coïncidence de créer implicitement la classe qui fournit la solution. Il suffit d'utiliser encoding.utf8.getbytes directement - ou utilisez la classe de codage correcte pour le codage de caractères souhaité (UTF-8 est un bon choix par défaut).