將css 中的16進位顏色, 轉化為 rgb格式,cssrgb

來源:互聯網
上載者:User

將css 中的16進位顏色, 轉化為 rgb格式,cssrgb

對dojo/_base/Color模組的註解, 源地址 https://github.com/robinxiong/dojo/blob/master/_base/Color.js


function fromHex(color){        /*         summary:            將css的屬性值,轉變為rgb格式的對像         "#fff"  -> 0xfff         長度為4, 一個字元佔用代表一個屬性, 0x10 == 16(2的4次方,即1後面4個0) === 1 0000, 那麼一個f 為 1111         預留位置為 mask = 1111, 用於佔住後四位(&用於保留後四位的值), 其它高位清零         每一次遍曆都從後四位開始,所以先擷取到 b值,難後移動4位,在擷取到 g, 在移動4位,擷取到 r         擷取b屬性:         0000 1111 1111 1111 & 0000 0000 0000 1111 (這裡只列舉出16位, 正常的是32位)         0000 0000 0000 1111 b儲存到變數 c         0000 1111 1111 1111 >> 4, -> 0000 0000 1111 1111         擷取g屬性         0000 0000 1111 1111 & 0000 0000 0000 1111         0000 0000 0000 1111 獲得到g的值,儲存到變數 c         在移四位,擷取r的值         "ffffff" -> 0xffffff         長度為8,每兩個字元代表一個函數 0xff = 1111 1111         每次擷取後8位,剛好代表顏色值         */        var t = {},                bits = (color.length == 4) ? 4 : 8,//如果是shorthand, #fff, 那麼bits為4位, 每一位代表的個屬性, 其它的為8位 每兩位代表一個屬性 #ffffff00                mask = (1 << bits) - 1; //表示位元組預留位置, 向左移4位或8位,var a = (1 << 4 ) - 1 -> 10000 - 1,  a.toString(2); // 1111,或者 8位的 1111 1111        color = Number("0x" + color.substr(1)); //#ff0000 轉變為16進位0xff0000;        if(isNaN(color)){            return null; // Color        }        ["b", "g", "r"].forEach(function(x){            var c = color & mask;            color >>= bits;            t[x] = bits == 4 ? 17 * c : c; // 0xfff , 一個f應該代表 255, 應該當[0-255],按15等份劃分,每一等份間隔 17。 所以獲得的值需要乘以17, 才能表示rgb中255的值        });        t.a = 1;        return t;// Color    }    console.log(fromHex("#00f"))  // {r:0, g: 0, b:255, a:1}



代碼中怎把RGB顏色值轉換成16進位?

簡單的移位和按位加:

int r,g,b;
int c; // TC 用 long int;
// 如果次序是RRGGBB
c = r << 16 | g << 8 | b;

// 如果次序是BBGGRR
c = b << 16 | g << 8 | r;
---------------------------------
例如:

#include "stdio.h"

int RGB(int r,int g,int b)
{
return r << 16 | g << 8 | b;
}

void main()
{
int r,g,b,c;
r = 255; g=255; b=255;
c = RGB(r,g,b);
printf("0x%06x",c);
}
 
怎將十六進位轉化成RGB

每兩個16進位就是RGB的一位,如BLACK=0XFFFFFF=RGB(FF,FF,FF)
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.