如何将RGB格式的颜色转换为十六进制格式,反之亦然?
例如,转换'#0080C0'
为(0, 128, 192)
。
注 :这两个版本的rgbToHex
期待整数值r
,g
并且b
,所以你需要,如果你有非整数值做自己的舍入。
以下将执行RGB到十六进制的转换,并添加任何所需的零填充:
function componentToHex(c) {
var hex = c.toString(16);
return hex.length == 1 ? "0" + hex : hex;
}
function rgbToHex(r, g, b) {
return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
}
alert(rgbToHex(0, 51, 255)); // #0033ff
转换另一种方式:
function hexToRgb(hex) {
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
}
alert(hexToRgb("#0033ff").g); // "51";
最后,在答案中rgbToHex()
讨论并在@cwolves的评论中建议使用的替代版本:
function rgbToHex(r, g, b) {
return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
}
alert(rgbToHex(0, 51, 255)); // #0033ff
更新
这是它的一个版本hexToRgb()
,还解析了一个速记的三元组,例如“#03F”:
function hexToRgb(hex) {
// Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
hex = hex.replace(shorthandRegex, function(m, r, g, b) {
return r + r + g + g + b + b;
});
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
}
alert(hexToRgb("#0033ff").g); // "51";
alert(hexToRgb("#03f").g); // "51";
两周以来,我一直在努力和阅读来解决这个问题,但我尝试的一切都没有奏效:-( 我正在使用python 2.7。 据我所知,我确实有一个base64字符串,格式如下: 我想把它转换成十六进制字符串。00000000194BD636AEDEAE4C9827C9465288D7F40700BA89A9BA12E1314B81606DB385F3B7B100000074656E0000BA89A9BA12E
问题内容: 如何将十进制转换为以下格式的十六进制(至少两位,零填充,没有0x前缀)? 输入: 输出: 输入: 输出: 我尝试过,但似乎它显示了第一个示例,但没有显示第二个示例。 问题答案: 将该功能与格式一起使用。 该部分要求使用至少2位数字,并使用零将其填充到长度,表示小写的十六进制。 的 格式规范的迷你语言 也给你大写十六进制输出,并且可以前缀字段宽度与以包括或前缀(取决于你阉羊使用或作为格式
问题内容: 我有一个Java文件 我想将 pic.bmp 转换为十六进制值的数组,以便可以编辑并将其保存为修改后的版本。 是否有Java类可以做到这一点? 问题答案: 你真幸运。我几个月前不得不这样做。这是一个精简版,需要从命令行获取两个参数。命令行参数都是文件名…第一个是输入文件,第二个是输出文件。输入文件以二进制形式读取,输出文件以ASCII十六进制形式写入。希望您可以根据自己的需要进行调整。
问题内容: 我有一个代表2的补码的十六进制字符串。是否有一种简单的方法(库/函数)将十六进制转换为十进制而不直接使用其位? EG这是给定左侧十六进制的预期输出: 谢谢! 问题答案: 这似乎在欺骗Java转换数字而不强制给出正结果: 当然,这种情况仅适用于8、16、32和64位2的补码:
问题内容: 我有一个家庭作业,需要在十进制,二进制和十六进制之间进行三向转换。我需要帮助的功能是将十进制转换为十六进制。我几乎不了解十六进制,但是如何将十进制转换为十六进制。我需要一个接受并返回的函数。不幸的是我没有此功能的任何草稿,我完全迷路了。我只有这个。 另外,我不能使用诸如Integer.toHexString()之类的预制函数或任何其他东西,我需要真正地制作算法,否则我什么都不会学。 问
主要内容:二进制,八进制,十六进制我们平时使用的数字都是由 0~9 共十个数字组成的,例如 1、9、10、297、952 等,一个数字最多能表示九,如果要表示十、十一、二十九、一百等,就需要多个数字组合起来。 例如表示 5+8 的结果,一个数字不够,只能”进位“,用 13 来表示;这时”进一位“相当于十,”进两位“相当于二十。 因为逢十进一(满十进一),也因为只有 0~9 共十个数字,所以叫做 十进制(Decimalism)。十进