我正在通过 UDP 接收大端数据并将其转换为小端。消息来源说整数是有符号的,但是当我交换有符号整数的字节(特别是 16 位)时,我得到了不切实际的值。当我将它们交换为无符号整数时,我得到了我的期望。我想源文档可能不正确,实际上是在发送无符号的 16 位整数。但是这有什么关系呢?这些值都应该是正数并且远低于 16 位 INT_MAX,因此溢出应该不是问题。我唯一能想到的是(1)文档是错误的并且(2)我在执行有符号字节序交换时没有正确处理符号位。
我真的有两个问题:
1)当溢出不是问题时,我读入有符号或无符号整数是否重要。
2) 有符号值和无符号值之间的字节序交换是否不同(即符号位是否需要以不同方式处理)?
我认为有符号和无符号值的字节序转换看起来相同,例如 16-bit value = value&0xff00 >> 8 | value&0x00ff << 8
。
谢谢