在 JavaScript 中将整数转换为十六进制字符串
Posted
技术标签:
【中文标题】在 JavaScript 中将整数转换为十六进制字符串【英文标题】:Converting integers to hex string in JavaScript 【发布时间】:2011-06-12 07:58:45 【问题描述】:如何将红色、绿色和蓝色的整数字节值转换为十六进制字符串,然后将其分配给上下文以呈现到 html5 画布上?
例如转换青色,
var r = 0;
var g = 255;
var b = 255;
用于分配给上下文填充颜色的十六进制字符串。
this.context.fillStyle = '#00FFFF';
或者有没有更好的方法来完全做到这一点?
【问题讨论】:
【参考方案1】:要将数字转换为十六进制,您可以使用内置的 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);
【讨论】:
【参考方案2】:只需使用 RGB 值,例如:
this.context.fillStyle = "rgb(0,255,255)";
【讨论】:
最好的答案总是最简单的! 但是感谢所有回复的人,他们的回答很有趣,对我的知识和理解很有价值。每个 +1。 @ElRonnoco 根据one person's post,它适用于 NN7+、IE5+、Mozilla 1.0+。所以是的,非常跨浏览器兼容。 (cannot be said 与rgba(...)
相同。)
喂。这不是回答所提出的问题。下面的答案 Number(integer).toString(16) 是正确的,应该被接受。
@DavidFischer 回答我认为的问题的第二部分【参考方案3】:
我认为,最简单的方法是:
变量 g = 255; g.toString(16); //给出“ff”使用赋予语言的功能。
【讨论】:
此答案缺少十六进制颜色值所需的 0 填充。 '0x' + g.toString(16),加个前缀很简单 您可以为此使用padStart
:g.toString(16).padStart(2, '0')
【参考方案4】:
将一个整数转换为十六进制字节,如:
const g = 255;
gPadded = Number(g).toString(16).padStart(2, "0");
使用数组会更好:
const r = 0;
const g = 255;
const b = 255;
const color = [r, g, b];
this.context.fillStyle = "#" + color.map(i=>i.toString(16).padStart(2, "0")).join("");
【讨论】:
【参考方案5】:function pad(number, length)
var str = '' + number;
while (str.length < length) str = '0' + str;
return str;
function toRGBHex(r,g,b)
return pad(r.toString(16),2) + pad(g.toString(16),2) + pad(b.toString(16),2);
【讨论】:
【参考方案6】:要将您的个人 RGB 值转换为十六进制颜色,您可以使用此函数,尽管改用 "rgb("+r+","+g+","+b+")"
更有意义。
function rgbToHex(r,g,b)
return "#"+("00000"+(r<<16|g<<8|b).toString(16)).slice(-6);
【讨论】:
~ 仅供参考,尽管已被拒绝,但我已将您的编辑合并到我的答案中。 ***.com/questions/17945972/…(这里没有发送消息的好方法) @MightyPork 哦,好的,谢谢你告诉我。是的,应该有办法在这里收件箱的人。哦,好吧。【参考方案7】:您可以使用.toString(16)
let decimalNumber = 255;
decimalNumber.toString(16)
// Expected output is "FF"
或者如果你想转换二进制基数
let decimalNumber = 24;
decimalNumber.toString(2)
// Expected output is "1010"
source MDN .toString(16)
【讨论】:
【参考方案8】:您可以为这种转换编写自己的方法 -
// 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);
原始来源 - http://programming.top54u.com/post/javascript-Convert-Decimal-to-Hex.aspx
【讨论】:
这只会转换一个半字节。 @El Ronnoco - 请检查链接。当十进制数大于 15 时,我们运行一个循环来调用这个函数。 @Tomas - 这取决于你想如何使用它。我想我已经给出了一个已经存在的代码的链接,它可以供您定制。你不觉得这里的downvote有点苛刻吗? 链接好像坏了。 链接似乎坏了,我不知道为什么这应该被否决?!这是一个有效的函数。以上是关于在 JavaScript 中将整数转换为十六进制字符串的主要内容,如果未能解决你的问题,请参考以下文章