Bonjour,
J'utilise Qt dans son ensemble.
Je suis amené à traiter des gros volumes de données sérialisées Big ou Little Endian.

A ce titre, j'ai tendance lors d'une conversion d'endianness de faire (et pour faire court dans l'exemple) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
quint16 fromBigEndianUCharArray(const uchar *src)
{
    return static_cast<quint16>(src[1] << 8) | static_cast<quint16>(src[0]);
 
}
une fonction Qt fait la même chose mais de cette façon (j'ai supprimé les infos de template) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
inline quint16 qFromBigEndian(const uchar *src)
{
    return quint16( 0
                    | src[1]
                    | src[0] * quint16(0x0100));
}
J'ai donc au moins deux questions :
  1. l'opérateur de multiplication, en remplacement de l'opérateur de décalage est-il plus efficace ?
  2. à quoi cela sert-il de commencer l'algo avec un OU avec 0 ?