Bonsoir,
La classe BooleanByteWrapper permet de serializer plusieurs variables boolean en une seule de type byte.
On pourrai traduire la fonction SetFlag() en C# de cette manière:
public static byte SetFlag(byte flag, byte offset, bool value)
{
if (offset >= 8)
throw new ArgumentException("offset must be lesser than 8");
return value ? (byte)(flag | (1 << offset)) : (byte)(flag & 255 - (1 << offset));
}
public static byte SetFlag(int flag, byte offset, bool value)
{
if (offset >= 8)
throw new ArgumentException("offset must be lesser than 8");
return value ? (byte)(flag | (1 << offset)) : (byte)(flag & 255 - (1 << offset));
}
Pour le cas de la classe IdentificationMessage,
_loc2_ = BooleanByteWrapper.setFlag(_loc2_,0,this.autoconnect);
_loc2_ = BooleanByteWrapper.setFlag(_loc2_,1,this.useCertificate);
_loc2_ = BooleanByteWrapper.setFlag(_loc2_,2,this.useLoginToken);
param1.writeByte(_loc2_);
Si tes variables sont de valeur false, la fonction va retourner une valeur nulle, par contre si ta variable est à true, le résultat sera positif. Les valeurs sont additionnés et envoyés au serveur qui arrivera à inverser le processus pour récupérer les valeurs de tes variables.
Donc si ton autoConnect est à true, loc2 aura pour valeur 1.
Si ton useCertificate est à true, loc2 aura pour valeur 3.
Et si ton useLoginToken est à false, loc2 conservera la valeur 3.