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) :
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 quint16 fromBigEndianUCharArray(const uchar *src) { return static_cast<quint16>(src[1] << 8) | static_cast<quint16>(src[0]); }
J'ai donc au moins deux questions :
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)); }
- 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 ?
Partager