将 RGB 转换为 HEX 问题
converting RGB to HEX issue
根据 Whosebug 主题之一,我尝试创建自己的 RGB 到 HEX 颜色转换器。
我不知道为什么,而是将其转换为双 RGB 数字。
所以当输入为 rgb(0, 128, 192)
时,它会输出 #00128192
。
我的代码是:
fromRGB: {
toHEX: {
supportFunc: function(number) {
var hex = number.toString(16);
return hex.length == 1 ? '0' + hex : hex;
},
convert: function(r, g, b) {
var lol = '#' + this.supportFunc(r) + this.supportFunc(g) + this.supportFunc(b);
console.log(lol);
}
},
prepareAndExecute: function(color_field) {
// preparing
var numbers = color_field.match(/\d+/g);
if(numbers.length == 3) {
this.toHEX.convert(numbers[0], numbers[1], numbers[2]);
} else {
alert('wrong RGB number format');
}
//this.toHSL(preparedValue);
}
}
我执行准备函数,lol
变量应该包含十六进制格式的转换颜色。
我的代码有什么问题,为什么它不起作用?
解释:
这是因为您将字符串而不是数字传递给 supportFunc
。
prepareAndExecute
中match
的结果是一个字符串数组,因此当你在supportFunc
中调用toString
时,你调用的是String.prototype.toString
(不是 Number.prototype.toString
) return 字符串原样。
解法:
在supportFunc
中,在使用toString
之前将number
转换为数字:
var hex = Number(number).toString(16); // using Number to convert a string to a number (you can use parseInt or unary + if you like)
或在将它们传递给 convert
之前转换它们:
this.toHEX.convert(+numbers[0], +numbers[1], +numbers[2]); // using unary +
根据 Whosebug 主题之一,我尝试创建自己的 RGB 到 HEX 颜色转换器。
我不知道为什么,而是将其转换为双 RGB 数字。
所以当输入为 rgb(0, 128, 192)
时,它会输出 #00128192
。
我的代码是:
fromRGB: {
toHEX: {
supportFunc: function(number) {
var hex = number.toString(16);
return hex.length == 1 ? '0' + hex : hex;
},
convert: function(r, g, b) {
var lol = '#' + this.supportFunc(r) + this.supportFunc(g) + this.supportFunc(b);
console.log(lol);
}
},
prepareAndExecute: function(color_field) {
// preparing
var numbers = color_field.match(/\d+/g);
if(numbers.length == 3) {
this.toHEX.convert(numbers[0], numbers[1], numbers[2]);
} else {
alert('wrong RGB number format');
}
//this.toHSL(preparedValue);
}
}
我执行准备函数,lol
变量应该包含十六进制格式的转换颜色。
我的代码有什么问题,为什么它不起作用?
解释:
这是因为您将字符串而不是数字传递给 supportFunc
。
prepareAndExecute
中match
的结果是一个字符串数组,因此当你在supportFunc
中调用toString
时,你调用的是String.prototype.toString
(不是 Number.prototype.toString
) return 字符串原样。
解法:
在supportFunc
中,在使用toString
之前将number
转换为数字:
var hex = Number(number).toString(16); // using Number to convert a string to a number (you can use parseInt or unary + if you like)
或在将它们传递给 convert
之前转换它们:
this.toHEX.convert(+numbers[0], +numbers[1], +numbers[2]); // using unary +