Ich habe meine eigene Klasse geschrieben, die C# -Standard-Primitive in Byte-Arrays umwandelt.Wie funktioniert die GetBytes-Funktion?
Später schaute ich mir die BitConverter
Klasse source an, um zu sehen, wie Profis es gemacht haben.
Mein Codebeispiel:
public static byte[] getBytes(short value) {
byte[] bytes = new byte[2];
bytes[0] = (byte)(value >> 8);
bytes[1] = (byte)value;
return bytes;
}
BitConverter Klassencode:
public unsafe static byte[] GetBytes(short value)
{
byte[] bytes = new byte[2];
fixed(byte* b = bytes)
*((short*)b) = value;
return bytes;
}
Warum ihre Funktionen als unsicher markiert sind und Betreiber festgelegt verwenden?
Sind solche Funktionen fehleranfällig, auch wenn sie unsicher sind? Sollte ich einfach meine fallenlassen und ihre Implementierung verwenden? Was ist effizienter?
Diese Funktionen machen verschiedene Dinge: Das erste verwendet Big Endian, das letzte native Endian. – CodesInChaos