将十六进制颜色转换为 RGB,反之亦然
做到这一点最有效的方法是什么?
What is the most efficient way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
做到这一点最有效的方法是什么?
What is the most efficient way to do this?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(10)
在Python中:
In python:
在 python 中,十六进制和“rgb”之间的转换也包含在绘图包
matplotlib
中。 即然后需要注意
的是,颜色中的 rgb 值假定在 0.0 和 1.0 之间。 如果你想在 0 到 255 之间,你需要做一个小的转换。 具体来说,
另一个注意事项是 colors.hex2color 仅接受有效的十六进制颜色字符串。
In python conversion between hex and 'rgb' is also included in the plotting package
matplotlib
. NamelyThen
The caveat is that rgb values in colors are assumed to be between 0.0 and 1.0. If you want to go between 0 and 255 you need to do a small conversion. Specifically,
The other note is that
colors.hex2color
only accepts valid hex color strings.真的很快:
just real quick:
真正的答案:取决于您正在寻找哪种十六进制颜色值(例如 565、555、888、8888 等)、alpha 位的数量、实际颜色分布(rgb 与 bgr...)以及大量其他变量。
这是使用 C++ 模板(直接来自 ScummVM)的大多数 RGB 值的通用算法。
以下是 565(16 位颜色的标准格式)的示例颜色结构:
Real answer: Depends on what kind of hexadecimal color value you are looking for (e.g. 565, 555, 888, 8888, etc), the amount of alpha bits, the actual color distribution (rgb vs bgr...) and a ton of other variables.
Here's a generic algorithm for most RGB values using C++ templates (straight from ScummVM).
Here's a sample color struct for 565 (the standard format for 16 bit colors):
修改 Jeremy 的 python 答案以处理短 CSS rgb 值,例如 0、#999 和 #fff(浏览器将呈现为黑色、中灰色和白色):
Modifying Jeremy's python answer to handle short CSS rgb values like 0, #999, and #fff (which browsers would render as black, medium grey, and white):
您只需将十六进制值(部分)转换为十进制,反之亦然。 还需要考虑,什么十六进制值可以包含 6 或 3 个字符(不含字符“#”)。
在Python 3.5上的实现
在JavaScript上的实现(适配了NodeJS,支持ES6)
在C上的实现(针对C11标准) >
编译后的结果(我用的是GCC)
You need only convert a value hex (in parts) to decimal and vice-versa. Also need considered, what value in hex may contains 6 or 3 characters (without character '#').
Implementation on the Python 3.5
Implementation on the JavaScript (adapted to the NodeJS with a support ES6)
Implementation on the C (intended for the C11 standart)
A result after compilation (I am used the GCC)
十六进制值只是以十六进制表示的 RGB 数字。 因此,您只需将每对十六进制数字转换为十进制即可。
例子:
A hex value is just RGB numbers represented in hexadecimal. So you just have to take each pair of hex digits and convert them to decimal.
Example:
这是我在 c++11 中为自己使用而创建的代码片段。
您可以发送十六进制值或字符串:
This is a fragment of code I created for my own use in c++11.
you can send hex values or strings:
非常简单和简短的实现:
Very Simple and Short implementation: