7
votes

Lire la plage de bits d'octet

Je recherche une méthode qui me permettra d'obtenir une gamme de bits. Par exemple, si j'ai les données binaires

0 1 0 1 1 0 1 1 1 1 0 1 0 1 1 1 (2 octets) < P> Je pourrais avoir besoin d'obtenir des données de la plage 3 à 9. En d'autres termes, je serais intéressé par:

0 1 0 1 1 0 1 1 1 1 0 1 0 1 1 1

donc en bref, je voudrais construire la méthode: xxx

de sorte que si je passe le Data nouvel octet [] {91,215}, 3, 9 i va obtenir octet [] {122} (note byte 91 et 215 = 0 1 0 1 1 0 1 1 1 1 0 1 0 1 1 1 et l'octet 122 = 1 1 1 1 0 1 0 Les mêmes données binaires comme exemple.

Ce serait Nice si je pouvais utiliser l'opérateur <<< / code> sur des tableaux d'octets tels que faire quelque chose comme: xxx

si vous êtes intéressé de savoir pourquoi J'ai besoin de cette fonctionnalité:

Je crée un projet sur une planche et j'ai souvent besoin de lire et d'écrire des valeurs à la mémoire. Le CDF, SFR ou DDF (arbitre au fichier de définition de puce ) contient des informations sur une partie puce iculaire. Ce fichier peut ressembler à: xxx

puisque je lis beaucoup de variables (parfois 80 fois par seconde), j'aimerai avoir un algorithme efficace. Je suppose que mon approche serait que si le bytesize est 8, je vais créer un long de ces 8 octets, utilisez ensuite le <<< / code> et >> opérateurs afin d'obtenir ce que J'ai besoin de. Si le bytesize si 4 puis je vais créer un int et utiliser le <<< / code> et >> les opérateurs mais comment vais-je le faire si je dois lire 16 octets? Je suppose que ma question devrait avoir été comment implémenter le <<< / code> et >> des types de structure personnalisés.


1 commentaires

80 fois par seconde? C'est la même vitesse qu'un jeu 3D tire des cadres à l'écran. Vous n'avez pas besoin d'un algorithme très efficace.


3 Réponses :




2
votes

the BigInteger classe in .NET 4+ prend un octet [] dans son constructeur et a des opérateurs de changement de vitesse gauche et droit.


0 commentaires