将十六进制HTML颜色转换为Amiga颜色寄存器十六进制(和后面)

Bea*_*mie 3 html assembly hex 68000 amiga

HTML十六进制颜色用6位数字写成(3个字节,一个所谓的A hex三元组).Amiga的颜色寄存器采用一个字(2字节,16位)来定义颜色.

例:

  • 黄色 - HTML十六进制#FFFF00
  • 黄色 - Amiga颜色寄存器$ 0FF0

必须有某种算法(或/和)一些工具,可以轻松地在HTML颜色和Amiga颜色注册表之间进行转换?或者?...请帮忙:)

Flo*_*ris 5

http://en.wikipedia.org/wiki/List_of_monochrome_and_RGB_palettes#12-bit_RGB表示每个R,G和B只使用4位.

换句话说 - 我怀疑如果你采用每个16位十六进制对的上半部分,并将它们串在一起,你会获得Amiga颜色.

在你的例子中:

R = 0xFF
G = 0xFF
B = 0xF0
Run Code Online (Sandbox Code Playgroud)

上半部分(上面加粗):

AmigaRGB = ((R & 0xF0) << 4) + (G & 0xF0) + ( B >> 4 )
Run Code Online (Sandbox Code Playgroud)

这确实会导致 0x0FF0

走向另一个方向:

R = AmigaRGB & (0x0F00) >> 4
G = AmigaRGB & (0x00F0)
B = AmigaRGB & (0x000F) << 4
Run Code Online (Sandbox Code Playgroud)

如果你想要想要你可以添加一些舍入,抖动等.

当然,HTML中使用的最终值是

HTML_RGB = R<<16 + G<<8 + B
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助.