Ich muss 16-Bit XRGB1555 in 24-Bit RGB888 konvertieren. Meine Funktion dafür ist unten, aber es ist nicht perfekt, d. H. Ein Wert von 0b11111 ergibt 248 als Pixelwert, nicht 255. Diese Funktion ist für Little-Endian, kann aber leicht für Big-Endian modifiziert werden.Wie konvertiert man in C# von RGB555 zu RGB888?
public static Color XRGB1555(byte b0, byte b1)
{
return Color.FromArgb(0xFF, (b1 & 0x7C) << 1, ((b1 & 0x03) << 6) | ((b0 & 0xE0) >> 2), (b0 & 0x1F) << 3);
}
Irgendwelche Ideen, wie es funktioniert?
also, wenn x das Ergebnis meiner aktuellen Funktion ist, möchte ich x | (x >> 5) – Origamiguy
Ja, das ist richtig, vorausgesetzt, Ihr Wert ist in Bits 7-3, oder wie @CodeInChaos angibt, wenn Sie es in Bits 4 haben 0, dann ist es (x <<3)|(x>> 2). – stusmith