在JavaScript中将整数转换为十六进制字符串

Tob*_*son 21 javascript hex

如何将红色,绿色和蓝色的整数字节值转换为十六进制字符串,然后将其分配给上下文以呈现到HTML5画布上?

例如,转换青色,

var r = 0;
var g = 255;
var b = 255;
Run Code Online (Sandbox Code Playgroud)

到十六进制字符串以分配上下文填充颜色.

this.context.fillStyle = '#00FFFF';
Run Code Online (Sandbox Code Playgroud)

或者有更好的方法来完成这项工作吗?

nem*_*isj 27

要将数字转换为十六进制,可以使用内置的toString(16)函数.简单代码:

function convert(integer) {
    var str = Number(integer).toString(16);
    return str.length == 1 ? "0" + str : str;
};

function to_rgb(r, g, b) { return "#" + convert(r) + convert(g) + convert(b); }

var color = to_rgb(r, g, b);
Run Code Online (Sandbox Code Playgroud)


dun*_*can 16

只需使用RGB值,例如:

this.context.fillStyle = "rgb(0,255,255)";
Run Code Online (Sandbox Code Playgroud)

  • @ElRonnoco根据[一人的帖子](http://www.webmasterworld.com/forum83/614.htm),它适用于NN7 +,IE5 +,Mozilla 1.0+.所以,是的,非常跨浏览器兼容._(对于`rgba(...)`,(http://css-tricks.com/rgba-browser-support/)相同[.)_ (2认同)

Zan*_*ngo 11

我认为,最简单的方法是:

var g = 255;
g.toString(16); //gives "ff"

使用提供语言的功能.

  • 这个答案缺少十六进制颜色值所需的0填充. (7认同)
  • '0x'+ g.toString(16),添加前缀非常简单 (2认同)