[PHP] hex -> int -> hex

Discussion in 'PHP' started by imajo.ati, 14 Jul 2009.

  1. imajo.ati

    imajo.ati Banned

    Joined:
    21 Feb 2008
    Messages:
    232
    Likes Received:
    62
    Reputations:
    8
    функция

    PHP:
    function int_to_rgb$i )
    {
        return 
    sprintf('#%02X%02X%02X'$i&0xFF , ($i>>8)&0xFF , ($i>>16)&0xFF );
    }
    переводит идентификатор цвета в hex

    как перевести обратно? к примеру #808000

    вот написал функцию

    PHP:
    function rgb_to_int$i // xxxxxx
    {
        
    $ret hexdec($i[0].$i[1]);
        
    $tmp hexdec($i[2].$i[3]); if ( $tmp != $ret *= $tmp;
        
    $tmp hexdec($i[4].$i[5]); if ( $tmp != $ret *= $tmp;
        return 
    $ret;
    }
    но она неправильно переводит некоторые цвета: допустим красный цвет FF0000 переводит правильно, а цвет 800080 нет

    не могу найти нигде
     
  2. imajo.ati

    imajo.ati Banned

    Joined:
    21 Feb 2008
    Messages:
    232
    Likes Received:
    62
    Reputations:
    8
    всё, нашёл формулу
    256*256*blue+256*green+red

    блин, рано тему создал =)
     
    #2 imajo.ati, 14 Jul 2009
    Last edited: 14 Jul 2009