Int32 >> Bytes [Résolu]

cs_yvesyves 562 Messages postés samedi 10 janvier 2004Date d'inscription 11 octobre 2010 Dernière intervention - 29 nov. 2007 à 11:02 - Dernière réponse : BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention
- 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
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 29 nov. 2007 à 21:11
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++

Merci BruNews 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de BruNews
Meilleure réponse
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 29 nov. 2007 à 22:17
3
Merci
C'est assuré avec la fonction que je t'ai passé. C'est exactement ca.

__________
  Kenji

Merci Charles Racaud 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de Charles Racaud
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 29 nov. 2007 à 13:54
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
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 29 nov. 2007 à 13:55
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
cs_yvesyves 562 Messages postés samedi 10 janvier 2004Date d'inscription 11 octobre 2010 Dernière intervention - 29 nov. 2007 à 14:26
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
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 29 nov. 2007 à 22:42
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.