Convertir en tableau d'octets à partir de petits à big endian ou vice versa
Comment puis-je convertir un tableau de type byte, Byte[] à partir de petits à gros-boutiste.
Je pense que je vais porter ce programme de Mono et je me demandais la meilleure approche. Toute aide serait appréciée.
EDIT: je suis en train de lire à partir d'un fichier à la fois sur les veuves et les mono.
Grâce.
Bob.
Le tableau d'octets contient whatevers lire dans un fichier.
OriginalL'auteur scope_creep | 2011-01-10
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas "convertir un
byte[]
à big endian", sauf si vous savez ce qui est dans lebyte[]
. Par exemple, les entiers de 2 octets aurez besoin d'avoir leurs deux octets échangés, tandis que les entiers de 4 octets aurez besoin d'avoir leurs 4 octets inversé. Si le tableau ne contient qu'un seul entier puis inverser les éléments de travail. Si non, vous aurez besoin de traiter chaque entité distincte figurant dans le tableau séparément.Mono.DataConvert est une bibliothèque qui peut aider ici, si vous savez ce que les segments de la matrice doivent être traités comme ce genre de type de données. Je vous recommande vivement de vérifier cette bibliothèque; je l'utilise dans plusieurs projets et c'est assez chouette. C'est même sous licence MIT et est contenue dans un fichier source, de sorte que vous pouvez le compiler directement dans quelque assemblée que vous construisez.
Salut cdhowie, j'ai vu le Mono.DataConvert mais vous ne savez pas comment l'appliquer. Essentiellement, le tableau contient tout ce qui est lu dans un fichier journal, que ce soit sur windows ou sur Mono, sur un autre système. Je wan pas pour s'assurer que ce qui est lu est un un seul endian (format par défaut de windows) pour tous les lecteurs des journaux, où il réside ou lit.
Sans connaître le format de ce fichier de journal, il n'y a rien que vous pouvez faire.
Comment fonctionne le format. Je sais que l'encodage pour chaque fichier que je suis en train de lire.
Je ne suis pas sûr que je sais ce que tu veux dire. L'encodage? Est-ce un fichier texte? Si oui, quel est l'encodage des caractères?
OriginalL'auteur cdhowie
Hmm je pense qu'il y a un problème ici. Un tableau d'octets est rarement intrinsèquement big endian ou little-endian. Un octet est presque toujours endian indépendant. Ce que vous voulez probablement, c'est pour corriger le boutisme des entiers, caractères, etc. contenues dans le tableau d'octets.
Pour ce faire, vous devez d'abord identifier les octets qui constituent le dit integer, char, etc. et puis retourner les octets. Basculant simplement/inversion de l'ensemble du tableau peuvent ne pas fonctionner (à moins que l'ensemble de la matrice représente un seul integer, char, etc.)
Utiliser la surcharge suivante de la Tableau.Reverse() méthode pour faire ce que vous voulez...
OriginalL'auteur Autodidact
Dans mon cas, j'avais besoin de convertir à partir d'une clé (qui était déjà en little endian format) à big endian chaîne. C'était plus facile que je l'imaginais, et ne nécessitent pas de déplacement octets. Voici une simple application console que j'ai utilisé pour tester:
L'exemple donné imprime ceci dans la console:
Clé d'origine: B13E7455-9965-4841-172F-741A662880D4
Big-endian version de la clé: 55743eb165994148172f741a662880d4
Vous pouvez trouver un travail violon ici: Little Endian à Big Endian
OriginalL'auteur Damian Perez
Voulez-vous inverser les éléments du tableau, ou de la valeur des octets eux-mêmes? Si seulement le tableau, alors vous pouvez utiliser
Array.Reverse()
OriginalL'auteur Brian Ball