Endian安全地将两个字符转换为unsigned short

时间:2015-02-27 00:00:49

标签: c++ qt qt5

我正在使用一个函数,该函数将两个char s(表示无符号的16位整数)作为参数。我需要将这些值转换回无符号整数,我希望该方法是endian-safe。我想出了下面的方法,但我想知道是否有更好的方法。我正在使用Qt,因此最终值存储在quint16

char msb; // most significant byte
char lsb; // least significant byte
quint16 value = ((msb & 0xff) << 8) | (lsb & 0xff);

1 个答案:

答案 0 :(得分:1)

您可以使用<QtEndian>功能。在您的情况下,您可以使用qFromLittleEndian。它是一个模板函数,所以你不需要将chars传递给一个函数,只需要一个quint16,它将返回该quint16的host-endian版本。在回复时,你可以调用qToLittleEndian。