【问题标题】:How to merge two unsigned chars into a single unsigned short(16 bits) in c++如何在c ++中将两个无符号字符合并为一个无符号短(16位)
【发布时间】:2021-02-16 13:36:00
【问题描述】:

如何在 C++ 中将两个无符号字符合并为一个无符号短字符。 数组中的最高有效字节包含在 array[0] 中,最低有效字节位于 array[1] 中。 (大端)

【问题讨论】:

    标签: c++ bit byte-shifting


    【解决方案1】:

    (array[0] << 8) | array[1]

    请注意,当您将unsigned char 用于任何计算时,它会隐式转换(“提升”)为int。因此array[0] << 8 不会溢出。此计算的结果也是 int,因此如果您的编译器发出警告,您可以将其转换回 unsigned short。

    【讨论】:

      【解决方案2】:

      将short设置为最低有效字节,将最高有效字节移位8并执行二进制或操作以保留下半部分

      unsigned short s;
      s = array[1];
      s |= (unsigned short) array[0] << 8;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多