Int32 >> Bytes

Résolu
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010 - 29 nov. 2007 à 11:02
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 29 nov. 2007 à 22:42
Bonjour,
Dans mon projet, j'ai la nécéssité de transformer une série de 3 millions de nombres Int32 en mots de 4 octets chacun.
Ma question est : Comment éviter les opérations bas niveaux pour éffectuer cette transformation et récupérer directement les ocets du nombre stockés en mémoire. Si une solution existe, est-elle plus rapide? (Normarlement, oui puisque il y a juste à pointé à l'emplacement spécifié).

Merci beaucoup.

6 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 nov. 2007 à 21:11
Si je te dis que ça dépend de ce que tu veux en faire, c'est pour ne pas faire d'opérations inutiles de copie et shifts inutiles, surtout 3 millions de fois.
Si les int32 sont dans un tableau, on peut les traiter linéairement sans aucune manip depuis une dll, exemple:
ton tableau se trouverait à l'adresse 'addr'

octet0 : addr
octet1 : addr+1
octet2 : addr+2
etc... sans aucune manip.

ciao...
BruNews, MVP VC++
3
Utilisateur anonyme
29 nov. 2007 à 22:17
C'est assuré avec la fonction que je t'ai passé. C'est exactement ca.

__________
  Kenji
3
Utilisateur anonyme
29 nov. 2007 à 13:54
Salut,

Tu peux le faire avec System.Runtime.InteropServices.Marshal.ReadByte
Il faudras quand même appeler la fonction quatre fois pour obtenir chaque byte.

__________
  Kenji
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 nov. 2007 à 13:55
Tout dépend de ce que tu voudras faire avec les mots de 4 octets compte tenu du fait que int32 est déjà un 4 octets donc aucun opération à faire.

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
29 nov. 2007 à 14:26
BruNews >> Je cherche à obtenir les 4 octets séparément d'un Int32
Charles Racaud >> Il me semble avoir déjà utilisé cette fonction, n'est elle pas plus lente que de simple opérations bas niveaux?

Merci de vos réponses
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 nov. 2007 à 22:42
appemer 4 fois * 3 millions.... absolument pas viable.
Tout traitement lourd doit être délégué à du code compilé.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous