Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中将整数转换为十六进制字符串_Javascript_Hex - Fatal编程技术网

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

在JavaScript中将整数转换为十六进制字符串,javascript,hex,Javascript,Hex,如何将红色、绿色和蓝色的整数字节值转换为十六进制字符串,然后将其分配给上下文以呈现到HTML5画布上 例如,转换青色 var r = 0; var g = 255; var b = 255; 指定给上下文填充颜色的十六进制字符串 this.context.fillStyle = '#00FFFF'; 或者有更好的方法来实现这一点吗?只需使用RGB值,如: this.context.fillStyle = "rgb(0,255,255)"; 您可以为此转换编写自己的方法- // functi

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

例如,转换青色

var r = 0;
var g = 255;
var b = 255;
指定给上下文填充颜色的十六进制字符串

this.context.fillStyle = '#00FFFF';

或者有更好的方法来实现这一点吗?

只需使用RGB值,如:

this.context.fillStyle = "rgb(0,255,255)";

您可以为此转换编写自己的方法-

// function to generate the hex code
function getHex(dec)
{
    var hexArray = new Array( "0", "1", "2", "3", 
                              "4", "5", "6", "7",
                              "8", "9", "A", "B", 
                              "C", "D", "E", "F" );

    var code1 = Math.floor(dec / 16);
    var code2 = dec - code1 * 16;

    var decToHex = hexArray[code2];

    return (decToHex);
} 
原始源代码-

功能板(编号、长度){
var str=''+数字;
而(str.length
要将数字转换为十六进制,可以使用内置的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);

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

var g = 255; g.toString(16); //gives "ff" var g=255; g、 toString(16)//给出“ff”
使用提供语言的功能。

要将单个RGB值转换为十六进制颜色,您可以使用此函数,尽管只需使用“RGB(“+r+”、“+g+”、“+b+”)”更合理

function rgbToHex(r,g,b) {
    return "#"+("00000"+(r<<16|g<<8|b).toString(16)).slice(-6);
}
函数rgbToHex(r,g,b){

返回“#”+(“00000”+(r您可以使用
.toString(16)

let decimalNumber=255;
小数点。toString(16)
//预期产出为“FF”
或者如果要转换二进制基数

设小数=24;
小数点。toString(2)
//预期产出为“1010”

将一个整数转换为十六进制字节,如:

const g=255;
gPadded=Number(g).toString(16).padStart(2,“0”);
使用数组会更好:

常数r=0;
常数g=255;
常数b=255;
常量颜色=[r,g,b];
this.context.fillStyle=“#”+color.map(i=>i.toString(16).padStart(2,“0”)).join(“”);

这将只转换一个半字节。@El Ronnoco-请检查链接。当十进制数大于15时,我们会运行一个循环来调用此函数。@Tomas-这取决于您想如何使用它。我想我已经给出了一个现有代码的链接,可供您自定义。您不认为downvote有点苛刻吗?链接似乎已断开。链接似乎已断开,我不知道为什么应该对此进行否决?!这是一个有效的函数。最好的答案总是最简单的!但感谢所有回答的人,它们是有趣的答案,对我的知识和理解很有价值。每个+1。@ElRonnoco根据它在NN7+、IE5+、Mozilla 1.0+中工作。所以是的,非常交叉-浏览器兼容。(与
rgba(…)
)Oi相同。这没有回答所问的问题。下面的答案,数字(整数)。toString(16)是正确的,应该被接受。@DavidScher回答问题的第二部分,我想这个答案缺少十六进制颜色值所需的0填充。'0x'+g.toString(16),添加前缀非常简单。您可以使用
padStart
来实现此目的:
g.toString(16)。padStart(2,'0')
~fyi我已经将您的编辑加入到我的答案中,尽管它已被拒绝。(在此处发送消息不是一个好方法)@MightyPork哦,好的,谢谢您告诉我。是的,这里应该有一种方法可以将人们发送到收件箱中。哦,好的。
function rgbToHex(r,g,b) {
    return "#"+("00000"+(r<<16|g<<8|b).toString(16)).slice(-6);
}