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