转换为 3 位十六进制颜色代码

发布于 2024-08-06 00:43:31 字数 332 浏览 3 评论 0 原文

我长期以来一直在 CSS 中使用 3 位十六进制颜色值:#fff#999#069 等。我可以看到重复的字母/数字如何合并以创建 3 位十六进制颜色代码,但我不完全理解能够在 PHP 中编写转换器的模式。有这方面的文档吗?

编辑:哦,也许我的问题不清楚。我需要知道一些 6 位十六进制颜色值如何转换为 3 位数字。 xxxxxx (ffffff) 和 xxyyzz (006699) – 这是仅有的两种模式,对吗?

I've been using 3-digit hex color values in CSS for a long time: #fff, #999, #069, etc. I can see how the repeating letters/numbers are merged to create a 3-digit hex color code, but I don't fully understand the pattern to be able to write a converter in PHP. Is there documentation for this?

Edit: Oh, perhaps my question wasn't clear. I need to know how some of the 6-digit hex color values are converted to 3-digits. xxxxxx (ffffff) and xxyyzz (006699) – these are the only two patterns, correct?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

一念一轮回 2024-08-13 00:43:32

#f0f 扩展为 #ff00ff 所以基本上你只需要计算每个字符的值并将该值乘以 16,例如:

#f98 :f = 15 =>红色 = 15 + 15*16 = 255 等

#f0f is expanded to #ff00ff so basically you just need to calculate the value and the value times 16 for each character, e.g.:

#f98: f = 15 => red = 15 + 15*16 = 255 etc.

赠意 2024-08-13 00:43:32
function hexfix(str) {
  var v, w;
  v = parseInt(str, 16);	// in rrggbb
  if (str.length == 3) {
    // nybble colors - fix to hex colors
	//  0x00000rgb              -> 0x000r0g0b
	//  0x000r0g0b | 0x00r0g0b0 -> 0x00rrggbb
	w = ((v & 0xF00) << 8) | ((v & 0x0F0) << 4) | (v & 0x00F);
	v = w | (w << 4);
  }
  return v.toString(16).toUpperCase();
 }

var hex1 = 'AABBCC',
    hex2 = 'ABC';

document.body.appendChild(document.createTextNode(hex1+" becomes "+hexfix(hex1)+'.  '));
document.body.appendChild(document.createTextNode(hex2+" becomes "+hexfix(hex2)+'.  '));

像这样的东西。

function hexfix(str) {
  var v, w;
  v = parseInt(str, 16);	// in rrggbb
  if (str.length == 3) {
    // nybble colors - fix to hex colors
	//  0x00000rgb              -> 0x000r0g0b
	//  0x000r0g0b | 0x00r0g0b0 -> 0x00rrggbb
	w = ((v & 0xF00) << 8) | ((v & 0x0F0) << 4) | (v & 0x00F);
	v = w | (w << 4);
  }
  return v.toString(16).toUpperCase();
 }

var hex1 = 'AABBCC',
    hex2 = 'ABC';

document.body.appendChild(document.createTextNode(hex1+" becomes "+hexfix(hex1)+'.  '));
document.body.appendChild(document.createTextNode(hex2+" becomes "+hexfix(hex2)+'.  '));

Something like this.

梦罢 2024-08-13 00:43:31

要将 3 个字符的十六进制代码转换为 6 个字符的十六进制代码,您需要重复每个字符:

$hex = '#fff';
$hex6 = '#' . $hex[1] . $hex[1] . $hex[2] . $hex[2] . $hex[3] . $hex[3];

如果要将其转换为十进制,您可以使用 十六进制函数

To convert a 3-character hex code into a 6 character one, you need to repeat each character:

$hex = '#fff';
$hex6 = '#' . $hex[1] . $hex[1] . $hex[2] . $hex[2] . $hex[3] . $hex[3];

If you want to convert it to decimal you can use the hexdec function

勿忘心安 2024-08-13 00:43:31

3 位 CSS 代码是 6 位数字的缩写": #06a; 是 #0066aa;
每两位数字代表0到255之间的一个数字。
您只需将这些值转换为十六进制并返回即可。

3 digit CSS code is short for 6 digits": #06a; is #0066aa;
Each two digits represent a number from 0 to 255.
Converting these values to hex and back is all you need.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文