Int32 >> Bytes [Résolu]

Messages postés
562
Date d'inscription
samedi 10 janvier 2004
Dernière intervention
11 octobre 2010
- - Dernière réponse : BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
- 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.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
34
3
Merci
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++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 110 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BruNews
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
35
3
Merci
C'est assuré avec la fonction que je t'ai passé. C'est exactement ca.

__________
  Kenji

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 110 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Charles Racaud
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
35
0
Merci
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
Commenter la réponse de Charles Racaud
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
34
0
Merci
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++
Commenter la réponse de BruNews
Messages postés
562
Date d'inscription
samedi 10 janvier 2004
Dernière intervention
11 octobre 2010
0
Merci
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
Commenter la réponse de cs_yvesyves
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
34
0
Merci
appemer 4 fois * 3 millions.... absolument pas viable.
Tout traitement lourd doit être délégué à du code compilé.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.