J'ai déjà demandé à propos de l'opposé de Bitwise ET (&) et vous m'a dit son impossible à inverser. Eh bien, voici la situation: Le serveur envoie une image, qui est encodée avec la fonction que je veux inverser, puis il est codé avec zlib.Comment inverser cette fonction
Voilà comment je reçois l'image du serveur:
UInt32[] image = new UInt32[200 * 64];
int imgIndex = 0;
byte[] imgdata = new byte[compressed];
byte[] imgdataout = new byte[uncompressed];
Array.Copy(data, 17, imgdata, 0, compressed);
imgdataout = zlib.Decompress(imgdata);
for (int h = 0; h < height; h++)
{
for (int w = 0; w < width; w++)
{
imgIndex = (int)((height - 1 - h) * width + w);
image[imgIndex] = 0xFF000000;
if (((1 << (Int32)(0xFF & (w & 0x80000007))) & imgdataout[((h * width + w) >> 3)]) > 0)
{
image[imgIndex] = 0xFFFFFFFF;
}
}
}
largeur, hauteur, image décompressée et image longueur comprimée sont toujours les mêmes.
Lorsque cette fonction est terminée, je mets une image (tableau UInt32 []) dans un bitmap et je l'ai.
Maintenant, je veux être le serveur et l'envoyer image.I doivent faire deux choses:
inverse cette fonction, puis compressent avec zlib.
Comment inverser cette fonction, je peux coder l'image?
for (int h = 0; h < height; h++)
{
for (int w = 0; w < width; w++)
{
imgIndex = (int)((height - 1 - h) * width + w);
image[imgIndex] = 0xFF000000;
if (((1 << (Int32)(0xFF & (w & 0x80000007))) & imgdataout[((h * width + w) >> 3)]) > 0)
{
image[imgIndex] = 0xFFFFFFFF;
}
}
}
EDIT: Le format est 32bppRGB
« et vous me dit son impossible d'inverser » ... Pensez-vous que SO est une sorte de collectif Borg? :) – BobbyShaftoe
Je ne pense toujours pas que vous pouvez inverser. & n'est pas réversible comme vous l'avez dit même si vous et avec une constante.Bien que je puisse me tromper, peut-être tester une image [i] == 0xFFFFFFFF signifiera qu'il a rencontré la condition alors peut-être que vous pouvez glaner quelque chose à partir de cela. –
Cette fonction convertit octet [] en bitmapdata brute.Thats tout ce qu'il fait –