Laden...

Umsetzung eines C-Quellcodes: Bitweise Operationen

Erstellt von schuppsl vor 16 Jahren Letzter Beitrag vor 16 Jahren 893 Views
S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 16 Jahren
Umsetzung eines C-Quellcodes: Bitweise Operationen

Hallole.
Ich versuche gerade einen ehemalige C-Quellcode in C# umzusetzen.
Es geht dabei um eine kleine Funktion die einige Bitweise operationen vornimmt.
Das sieht so aus (Beispielhafter Code)



for(i=0; i<len; i++,ptr++)
		if((j = *ptr) != 0 && j != 0xff)			
				*ptr =   (char) ~((j & 0x51) | ((j << 1) & 0x17) ;
....uvm

ptr ist dabei eine Referenz auf ein char Array.

Ich habs jetzt mal so versucht:




char[] ptr = cptr.ToCharArray();

           for (; i < len; i++)
           {
               j = ptr[i];
               if (j != 0 && j != 0xff)
                   ptr[i] = (char)~((j & 0x51) | ((j << 1) & 0x17);
          }


cptr ist dabei ein string indem der Text steht.

Es läuft soweit wunderbar, nur kommt das am Ende nicht heraus was ich haben will.
Kann man das denn überhaupt so umsetzen?

S
8.746 Beiträge seit 2005
vor 16 Jahren

Probier mal das:

           byte[] ptr = System.Text.Encoding.Default.GetBytes("Hallo\0");

           byte j;
           for (int i = 0; i < ptr.Length; i++)
           {
               j = ptr[i];
               if (j != 0 && j != 0xff)
                   ptr[i] = (byte)~((j & 0x51) | ((j << 1) & 0x17));
          }
S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 16 Jahren

Hm also wenn ich den ptr nachher so wieder in nen string umwandle:


text = ptr.ToString();

steht da nachher System.Byte[] drin.
Muss ich das nochmal irgendwie umwandeln?

S
8.746 Beiträge seit 2005
vor 16 Jahren

Wenn die Hinwandlung mit

byte[] ptr = System.Text.Encoding.Default.GetBytes("Hallo\0");

erfolgt, ist es doch naheliegend, dass die Rückwandlung mit einer korrespondierenden Funktion funzt... brauchst nichtmal die Hilfe aufrufen, Intellisense wird dich schon zum Ziel führen...

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 16 Jahren

Danke, das hat geholfen....Vielen Dank.