hex2rgb

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • hex2rgb

    Hallöchen!

    Ich hab da mal n kleines Verständnis Problem. Undzwar handelt es sich um folgenden Code-Snippet:

    PHP-Code:
    function hex2rgb() {    
        
    $int hexdec($hexstr);    
        return Array( 
    0xFF & ( $int >> 0x10 ),
                      
    0xFF & ( $int >> 0x8 ),
                      
    0xFF $int);

    Was die Funktion an sich macht, ist mir natürlich klar (sagt ja auch schon der Name), aber wie genau geht denn der Ablauf vonstatten? Ich versteh irgendwie nich so ganz, wie des Array da aufgebaut wird, bzw. was der Shift-Operator da überhaupt macht? Ich weiß auch ehrlichgesagt nich wonach ich suchen muss, und darum hilft mir Google nicht weiter. Wenn mir da jemand n Tipp geben könnte wärs echt toll. Danke schonma im Voraus.
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

  • #2
    Ein Integer ist 4 Byte groß. Jeder RGB-Wert reicht von 0-255, also genau 1 Byte. Der Hexwert ist jetzt der 4 Byte Integer mit den 3 Farbkomponenten, die du einzeln extrahieren musst!
    0xFF & $int extrahiert das unterste Byte aus dem Integer. Willst du aber nicht das unterste, sondern das zweite oder dritte extrahieren, musst du vor der Maskierung mit 0xFF um ein oder zwei Bytes shiften, also 0x8 für 1 Bytestelle und 0x10 (=16) für 2 Bytestellen.
    Somit extrahierst du das 2te Byte als Rotkomponente, das 3te Byte als Grünkomponente und das 4te Byte als Blaukomponente. Das 1te Byte bleibt halt unbeachtet.

    Frage beantwortet?

    Edit: schneller

    Kommentar


    • #3
      lies mal was über die binär- und hexadezimal-darstellung der zahlen und die bitoperationen, etwa in der wikipedia.

      mit 0xFF maskierst du ein byte, mit einem shift "schiebst du den hexadezimalen wert vor die maske".

      Kommentar


      • #4
        Joup, damit wird einiges klarer. Danke leutz.
        Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

        Kommentar

        Lädt...
        X