我正在使用一个函数,该函数将两个char
s(表示无符号的16位整数)作为参数。我需要将这些值转换回无符号整数,我希望该方法是endian-safe。我想出了下面的方法,但我想知道是否有更好的方法。我正在使用Qt,因此最终值存储在quint16
。
char msb; // most significant byte
char lsb; // least significant byte
quint16 value = ((msb & 0xff) << 8) | (lsb & 0xff);
答案 0 :(得分:1)
您可以使用<QtEndian>
功能。在您的情况下,您可以使用qFromLittleEndian。它是一个模板函数,所以你不需要将chars传递给一个函数,只需要一个quint16,它将返回该quint16的host-endian版本。在回复时,你可以调用qToLittleEndian。