Je pense que ce serait plus approprié (même si cela dépend de la façon dont d est utilisé):
byte[] des16 = new byte[16];
IEnumerable<byte> d = des16.Skip(8);
En utilisant le code managé pur, vous ne pouvez pas utiliser des pointeurs vers des endroits. Puisque d prend un pointeur sur le 8ème élément du tableau, l'analogue le plus proche serait de créer une énumération de des16 ignorant les 8 premiers éléments. Si vous êtes juste en train de parcourir les éléments, ce serait le meilleur choix.
Je dois également mentionner que Skip()
est l'une des nombreuses méthodes d'extension disponibles pour les tableaux (et autres IEnumerable
s) dans .Net 3.5 (VS2008/VS2010) et jusqu'à ce que je pouvais seulement supposer que vous utilisiez. Vous ne seriez pas capable de l'utiliser si vous utilisez .Net 2.0 (VS2003/VS2005).
Si d est utilisé pour accéder aux éléments de décalage dans des16 comme un tableau, il pourrait également être converti en tableau.
byte[] d = des16.Skip(8).ToArray();
Notez cela crée une instance distincte d'un tableau qui contient les éléments des16 à l'exception du premier 8.
Sinon, il est pas tout à fait clair que la meilleure utilisation serait sans voir comment il est utilisé.
[modifier]
Il semble que vous travaillez avec des chaînes terminées par null dans un tampon en .Net 2.0 peut (si Skip()
n'est pas disponible). Si vous voulez la représentation sous forme de chaîne, vous pouvez la convertir en un objet chaîne natif.
byte[] des16 = new byte[16];
char[] chararr = Array.ConvertAll(des16, delegate(byte b) { return (char)b; }); //convert to an array of characters
string str = new String(chararr, 8, chararr-8); //create the string
Vrai, mais cela demandera quelques explications à un C++ - go-er. – Dykam
Point pris. Je devrais élaborer. –
Merci les gars mais toujours pas. 'System.Array' ne contient pas de définition pour 'Skip'. – edv4ld0