我目前正在尝试对一些游戏文件进行逆向工程。我已经找到了每个图形元素的确切位置,但现在我一直在尝试将它们的数据转换为“可读”的 rgb 代码。它们使用 16 位长的十六进制值(0xC306 或 110000110000 转换为 R:0 G:219 B:24)
该文件是用小端格式编写的。有人能告诉我他们是如何转换的吗?
更多例子:
(0xCFC0 -> RGB 198 24 123)
(0xFFF0 -> RGB 247 28 255)
(0xFF00 -> RGB 0 28 255)
我目前正在尝试对一些游戏文件进行逆向工程。我已经找到了每个图形元素的确切位置,但现在我一直在尝试将它们的数据转换为“可读”的 rgb 代码。它们使用 16 位长的十六进制值(0xC306 或 110000110000 转换为 R:0 G:219 B:24)
该文件是用小端格式编写的。有人能告诉我他们是如何转换的吗?
更多例子:
(0xCFC0 -> RGB 198 24 123)
(0xFFF0 -> RGB 247 28 255)
(0xFF00 -> RGB 0 28 255)
它似乎以与您使用标准 5-6-5 位编码给出的字节顺序相反的顺序存储,然后缩放到每个最大 255。
R: 24 (0b11000) * 255/31 = 197 G: 6 (0b000110) * 255/63 = 24 B: 15 (0b01111) * 255/31 = 123
R: 30 (0b11110) * 255/31 = 247 G: 7 (0b000111) * 255/63 = 28 B: 31 (0b11111) * 255/31 = 255
R: 0 (0b00000) * 255/31 = 0 G: 7 (0b000111) * 255/63 = 28 B: 31 (0b11111) * 255/31 = 255