J'ai écrit ma propre classe qui convertit les primitives standard C# en tableaux d'octets.Comment fonctionne la fonction GetBytes?
Plus tard, j'ai jeté un oeil à la BitConverter
classe source, pour voir comment les pros l'ont fait.
Mon exemple de code:
public static byte[] getBytes(short value) {
byte[] bytes = new byte[2];
bytes[0] = (byte)(value >> 8);
bytes[1] = (byte)value;
return bytes;
}
BitConverter code de classe:
public unsafe static byte[] GetBytes(short value)
{
byte[] bytes = new byte[2];
fixed(byte* b = bytes)
*((short*)b) = value;
return bytes;
}
Pourquoi leurs fonctions taggés comme opérateur dangereux et l'utilisation fixe?
Ces fonctions sont-elles sujettes aux erreurs même si elles ne sont pas sécurisées? Devrais-je simplement laisser tomber le mien et utiliser leur mise en œuvre? Lequel est le plus efficace?
Ces fonctions font des choses différentes: la première utilise le gros boutiste, le dernier endian. – CodesInChaos