opérateur de décalage, ou multiplication
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:
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:
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 :
- l'opérateur de multiplication, en remplacement de l'opérateur de décalage est-il plus efficace ?
- à quoi cela sert-il de commencer l'algo avec un OU avec 0 ?