Je sais que la question est un peu étrange, je demande par pure curiosité, car je ne pouvais pas trouver d'informations pertinentes autour. Aussi, s'il vous plaît n'hésitez pas à modifier le titre, je sais que c'est terrible, mais ne pouvait pas mieux. Disons que j'ai une variable foo de type object, qui est soit short soit ushort. Je dois l'envoyer sur le réseau, donc j'utilise BitConverter pour la transformer en octet []:C# - les représentations d'octets de différents types sont-elles différentes?
byte[] b = new byte[2];
if(foo is short){
BitConverter.GetBytes((short)foo, 0);
}else{
BitConverter.GetBytes((ushort)foo, 0);
}
Réseau/Socket magique arrive, je veux revenir ma variable. Je connais le type que je m'attends à obtenir, donc j'appelle BitConverter.GetUInt16 ou GetInt16 correctement. Maintenant, la question est - est-ce vraiment important, comment j'ai sérialisé la variable? Je veux dire, les bits sont les mêmes, donc ça ne devrait pas avoir de sens, ai-je raison? Alors que je pouvais
BitConverter.GetBytes((short)foo, 0);
puis faire
BitConverter.GetUInt16(myByteArray, 0);
Toute personne?
Il y a seulement 65536 shorts. Essayez-les tous, et bientôt vous connaîtrez la réponse. –
Est-ce que cela voudrait dire que pour les machines ayant la même endianness bytes _will_ sera la même chose? – Pindwin
@CodeCaster ... quoi? – Rawling