Entwickler-Ecke
Sonstiges (.NET) - Mit Pointer Konvertieren
AeroX - Di 13.05.08 13:34
Titel: Mit Pointer Konvertieren
hallo,
ich möchte gerne meine eigenen Methoden zum konvertieren machen,
aber ich krieg das mit den pointern nich richtig hin.
hier mal ein beispiel:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40:
| private static unsafe void wstrcpy(char* dmem, char* smem, int charCount) { if (charCount > 0) { if ((((int)dmem) & 2) != 0) { dmem[0] = smem[0]; dmem++; smem++; charCount--; } while (charCount >= 8) { *((int*)dmem) = *((uint*)smem); *((int*)(dmem + 2)) = *((uint*)(smem + 2)); *((int*)(dmem + 4)) = *((uint*)(smem + 4)); *((int*)(dmem + 6)) = *((uint*)(smem + 6)); dmem += 8; smem += 8; charCount -= 8; } if ((charCount & 4) != 0) { *((int*)dmem) = *((uint*)smem); *((int*)(dmem + 2)) = *((uint*)(smem + 2)); dmem += 4; smem += 4; } if ((charCount & 2) != 0) { *((int*)dmem) = *((uint*)smem); dmem += 2; smem += 2; } if ((charCount & 1) != 0) { dmem[0] = smem[0]; } } } |
das ist die methode wstrcpy aus der Klasse String.
Wenn ich sie mir kopiere, schreibt er dass uint nicht in int konvertiert werden kann!
was muss ich ändern?
Kha - Fr 16.05.08 23:02
Denke daran, dass du den Fx-Code nur als Referenz und nicht selbst benutzen oder verändern darfst. Und erst recht nicht hier posten :mrgreen: . [*]
Zum Problem: Ich sehe keinen Grund, warum du nicht einfach uint durch int ersetzen können solltest. Es geht ja nur um byteweises Kopieren mit ein wenig Loop Unrolling.
[edit]
[*] Auch Reflector- oder Rotor-Code ist natürlich nicht gerade FOSS.
[/edit]
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!