Konvertieren von Ganzzahlen in RGB-Werte und zurück mit Python

8

Ich habe zwei Funktionen, eine, um RGB-Werte von einer gegebenen Ganzzahl zurückzugeben, und die andere Funktion macht das Gegenteil, indem sie RGB-Werte liefert, gibt sie eine Ganzzahl zurück. Ich teste das, indem ich sehe, ob die Ganzzahl, die ich in RGB umwandle, von RGB in den ursprünglichen Ganzzahlwert zurückkehrt, aber ich bekomme andere Werte.

%Vor%

der Test:

%Vor%

Mir scheint, dass die getRGBfromI () korrekt ist und die getIfromRGB () falsch ist, aber ich kann mich auch deswegen irren.

    
M_PF 14.10.2015, 11:41
quelle

2 Antworten

8

Beide Funktionen scheinen gut zu funktionieren.

Der Maximalwert, ausgedrückt durch eine 24-Bit-Ganzzahl (das Vorzeichen für jetzt vergessen) ist

%Vor%

Also

%Vor%

ist höher als mx und

%Vor%

gibt richtig

%Vor%

, da die Bits über 24 abgeschnitten werden (0xFFFFFF belegt Bits von 0 bis 23)

Viceversa,

%Vor%

gibt richtig

%Vor%

Dies ist der Maximalwert, den Sie mit 24 Bits darstellen können (d. h. das mx oben).

Wenn Sie 1,4 Liter Wasser in eine 1 Liter Flasche gießen, wird etwas Wasser im Überlauf verloren gehen. Wenn Sie die Flasche leeren, finden Sie 1L maximal

    
Pynchia 14.10.2015, 11:51
quelle
4

Es ist nichts falsch mit Ihrem Code. Die Werte sind unterschiedlich, weil Sie 2147483647 als Eingabe angeben, die in hexadezimal übersetzt wird. Gibt 0x7FFFFFFF als Ausgabe an. Auf der anderen Seite ist 16777215 0xFFFFFF in hexadezimal , sodass Sie verstehen, dass mit Ihrem Code nichts falsch ist, abgesehen von der Tatsache, dass Sie so viel geben Dezimalzahl als Eingabe.

Sie können dies testen, indem Sie eingeben:

%Vor%     
nikaltipar 14.10.2015 11:51
quelle

Tags und Links