Question

J'utilise BitConverter.ToInt32 pack 3 valeurs byte dans un int, comme suit:

byte R = 0;
byte G = 0;
byte B = 0;
int i = BitConverter.ToInt32(new byte[] { R, G, B, 0 }, 0);

Y at-il un moyen plus rapide de le faire qui ne concerne pas la création d'un nouveau int à chaque fois? Obtenir les octets sur un int est facile:

int i = 34234;
byte B = (byte)(i >> 0);
byte G = (byte)(i >> 8);
byte R = (byte)(i >> 16);

Yat-il un moyen simple d'inverser ce processus et utiliser le bit de décalage pour écrire le RGB octets de retour sur une int existante?

Était-ce utile?

La solution

int i = (B << 0) | (G << 8) | (R << 16);

Autres conseils

Vous devriez considérer la structure Color . Il a des propriétés de R, G et B et des méthodes FromArgb () et ToArgb ().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top