以下为ChatGPT自动生成的解答,正确与否请自行判断。
BFE.devAI解答 - JavaScript 代码题
78. HEX转换为RGBA
function hexToRgb(hex) {
// 去除可能存在的 # 号
hex = hex.replace("#", "");
// 如果不是合法的 3/6 位十六进制颜色码,返回 false
if (!hex.match(/^([0-9a-f]{3}|[0-9a-f]{6})$/i)) {
return false;
}
// 将 3 位颜色码转换为 6 位
if (hex.length === 3) {
hex = hex.replace(/(.)/g, "$1$1");
}
// 将 16 进制颜色码转换为 RGB 数值
var hexNum = parseInt(hex, 16);
var r = hexNum >> 16;
var g = (hexNum & 0x00ff00) >> 8;
var b = hexNum & 0x0000ff;
// 如果 RGB 数值不合法,返回 false
if (isNaN(r) || isNaN(g) || isNaN(b) || r > 255 || g > 255 || b > 255) {
return false;
}
// 转换 RGB 数值为函数格式的 RGBA
var alpha = 1;
var rgba = "rgba(" + r + "," + g + "," + b + "," + alpha + ")";
return rgba;
}
以上代码使用正则表达式判断颜色码是否合法,使用位运算将 16 进制颜色码转换成 RGB 数值,最后将 RGB 数值按照函数格式拼接并返回即可。需要注意的是,如果没有给出 alpha 值,函数格式为 rgba(r, g, b, 1)
。