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?
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));
}
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?
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...