css의 16진수 색상을 rgb 형식으로 변환
1756 단어 JavaScript바이너리16진법자리 표시자비트 조작 원리
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}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.