Fragen auf 0xff
Ich arbeite an einer C++ - code. Nicht sehr sicher, was den code unten versucht zu tun. Möchte jemand helfen sich drauf.
int pval = t_gamma[depth[i]];
int lb = pval & 0xff;
switch (pval>>8) {
case 0:
depth_mid[3*i+0] = 255;
depth_mid[3*i+1] = 255-lb;
depth_mid[3*i+2] = 255-lb;
break;
case 1:
depth_mid[3*i+0] = 255;
depth_mid[3*i+1] = lb;
depth_mid[3*i+2] = 0;
break;
case 2:
depth_mid[3*i+0] = 255-lb;
depth_mid[3*i+1] = 255;
depth_mid[3*i+2] = 0;
break;
case 3:
depth_mid[3*i+0] = 0;
depth_mid[3*i+1] = 255;
depth_mid[3*i+2] = lb;
break;
case 4:
depth_mid[3*i+0] = 0;
depth_mid[3*i+1] = 255-lb;
depth_mid[3*i+2] = 255;
break;
case 5:
depth_mid[3*i+0] = 0;
depth_mid[3*i+1] = 0;
depth_mid[3*i+2] = 255-lb;
break;
default:
depth_mid[3*i+0] = 0;
depth_mid[3*i+1] = 0;
depth_mid[3*i+2] = 0;
break;
}
- Sie schrieb diese oder fand diese? Was ist das Teil? Was ist der gesamte code, der versucht zu tun? Oder sind Sie nur Fragen, was dieser 0xff ist?
lb
bedeutet letzten byte- Du arbeitest an einem c++ - code? Nur eine? Macht keinen Sinn
- lb kann auch bedeuten, low byte richtig?
- ich fand diesen code möchte, um es zu verstehen...
- seltsame Sachen, Rechte shift 8 bit, sondern nur daran interessiert, die rechten 3 bit nach dieser operation. nur merkwürdig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
0xff
bedeutet "die hexadezimale Zahlff
" - in anderen Worten, die ganze Zahl255
, die die binäre Darstellung00000000000000000000000011111111
(bei Verwendung von 32-bit-Ganzzahlen). Die&
- operator führt eine bitweise UND-operation.a & b
geben Sie eine ganze Zahl mit einem bit-Muster, das eine0
in allen Positionen, in denenb
hat eine0
, während in allen Positionen, in denenb
hat eine1
, wird der entsprechende bit-Wert ausa
verwendet wird (dies gilt auch Umgekehrt). Zum Beispiel die bitweise UND-Verknüpfung von10110111
und00001101
ist00000101
.In diesem Fall
pval & 0xff
geben Sie die niedrigstwertigen 8 bits vonpval
.Als für das, was der code tut, ich glaube, es versucht zu transformieren Farbwerte von einem speziellen format zu standard RGB: die Farbe, die Werte scheinen zu enthalten elf bits, wo drei von Ihnen deuten auf eine Farbpalette (z.B.
000
scheint darauf hinzudeuten, dass die Reihe "weiß blau", während001
zeigt "rot zu gelb"), und die niedrigstwertigen acht bits, die angeben, eine Farbe in diesem Bereich.Diese operation führt eine bitweise UND-operation auf pval mit 0xff.
Da 0xff ist in 1 dargestellt ist, in die unteren 8 bits der integer ist, ist es effektiv Masken pval also, es bleibt nur der Wert in den letzten 8 bits.
So, in anderen Worten, es ignoriert den rest der integer-Wert, und macht eine einfache modulo-256 Berechnung. Aber es ist in der Regel nur für das empfangen des letzten bits.
pval ist ein int, aber die niedrigsten 8 bits haben eine Besondere Bedeutung, und die restlichen bits haben andere
Den code "int lb = pval & 0xff' gibt nur den Wert von 'b' bit.
pval >> 8 liefert den Wert von 'ein' bits.
Als auf das, was der code macht, es scheint mir, dass es die Umwandlung von Daten auf eine Farbe zuordnen, damit es angezeigt werden kann. Es gibt nicht genug Informationen, um wirklich sicher, obwohl.