【问题标题】:PHP convert 12digit hex to 6PHP将12位十六进制转换为6
【发布时间】:2012-06-19 10:51:49
【问题描述】:

我正在解析某个软件提供的 XML 文件。部分解析是从某些属性中提取颜色。我遇到的问题是颜色是 12 位十六进制值。即,

<Text AdornmentStyle="0" Background="#FFFFFFFFFFFF" Color="#DD6B08C206A2" Font="Courier Final Draft" RevisionID="0" Size="12" Style="">Test</Text>

如您所见,颜色长度为 12 位。我需要获得 6 位颜色,以便在 html 上正确显示。

以前有人遇到过这种情况吗?

希望你能给点建议。

【问题讨论】:

  • #DD6B08C206A2 是什么颜色?我以前从未见过。
  • 会是 CMYK 吗? (只是猜测)
  • @cypher:每通道 1.5 个字节是什么?这甚至比 2 字节 RGB 更奇怪,尽管并非不可能。

标签: php css colors


【解决方案1】:

以前从未见过 12 位十六进制颜色字符串。每个通道必须使用 2 字节,这意味着如果你转换它,你会丢失一些信息。

我相信颜色的格式是 #RRRRGGGGBBBB,所以取每 4 个 hexgits 并除以 (16^4/16^2)=256,必要时取整。应该这样做。

...如果这不能为您提供正确的颜色,请尝试 CMYK,就像 cypher 建议的那样:#CCCMMMYYYKKK(每通道 12 位)。

例如,转换DD6B08C206A2 做:

0xDD6B / 0x100 = 0xDD
0x08C2 / 0x100 = 0x08
0x06A2 / 0x100 = 0x06

将它们重新组合在一起,您将获得#DD0806

【讨论】:

  • 我不太确定你要我尝试什么 ("DD6B" / (16^4/16^2);) 我确定这是错的?
  • @Lee,马克要你试试0xDD6B/256
  • @Lee: DD6B 是 56683 的十六进制。除以 256 得到十进制的 221 或十六进制的 DD(R 组件只给你 2 个 hexgits,这就是你想要的)。
猜你喜欢
  • 1970-01-01
  • 2017-03-08
  • 2012-05-01
  • 2013-07-15
  • 2015-06-25
  • 2013-03-10
  • 1970-01-01
  • 2012-07-29
  • 1970-01-01
相关资源
最近更新 更多