tryborg
Messages postés29Date d'inscriptionlundi 31 janvier 2005StatutMembreDernière intervention 1 mars 2005
-
16 févr. 2005 à 13:37
tryborg
Messages postés29Date d'inscriptionlundi 31 janvier 2005StatutMembreDernière intervention 1 mars 2005
-
16 févr. 2005 à 20:10
Bonjours à tous !
Voici mon problème :
J'enregistre toutes les couleurs d'une PictureBox dans un fichier avec la commande Point qui me renvoie une information codé en Long.
Je voudrai pouvoir lire ces informations en 4 Octets, puis par la suite, recomposer mon Long d'origine via ces 4 Octets.
Mais comment faire ? Je connait l'opérateur MOD qui permet de faire l'inverse, donc de séparer un Long en quatre Octets, mais moi c l'inverse qu'il me faut, enfin presque :/
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 16 févr. 2005 à 17:36
SalutEn fait, ce que tu veux faire revient à gérer une base 256 (octet byte)
Le plus simple est de convertir ton entier en hexa :
ValHexa = Hex(monLong)
Exemple avec -2 147 483 648 (mini) = FFFF FFFF 8000 8000
Exemple avec 2 147 483 647 (maxi) = 0000 0000 7FFF FFFF
Ensuite, ta valeur est donc représentée par 4 blocs de 2 bytes (un byte = deux octets). Facile d'isoler chaque couple.
Pour reconvertir un hexa en valeur :
ValeurLong = CLng(Val( "&h" & ValHexa ))
Vala
Jack
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 16 févr. 2005 à 18:21
rectification:
Exemple avec -2 147 483 648 (mini) = 8000 0000
Exemple avec 2 147 483 647 (maxi) = 7FFFF FFFF
si R représente la couleur:
on récupère les trois composantes:
Rouge = R And &HFF
Vert = (R And &HFF00&) \ 256
Bleu = (R And &HFF0000) \ 65536
(le quatrième octet toujours à zéro, pas géré par la PictureBox)
on recompose la couleur:
R = RGB(Rouge, Vert, Bleu)