4 Bytes, 1 Long [Résolu]

Signaler
Messages postés
29
Date d'inscription
lundi 31 janvier 2005
Statut
Membre
Dernière intervention
1 mars 2005
-
Messages postés
29
Date d'inscription
lundi 31 janvier 2005
Statut
Membre
Dernière intervention
1 mars 2005
-
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 :/

Merci d'avance et bonne prog.

tryborg

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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)
3
Merci

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

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

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
28
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)

Daniel
3
Merci

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

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

Messages postés
29
Date d'inscription
lundi 31 janvier 2005
Statut
Membre
Dernière intervention
1 mars 2005

Merci, la manipulation de bits sous vb était un domaine obscure avant que vous n'arriviez ;-)

Bon j'ai encore beaucoup de boulot avant de pouvoir publier ma 1er source, alors A+


tryborg