我通过UDP接收大端数据并将其转换为小端。源代码说整数是有符号的,但是当我交换有符号整数(特别是16位)的字节时,我会得到不切实际的值。当我将它们作为未签名的整数交换时,我得到了我期望的结果。我想源文档可能不正确,实际上是发送无符号的16位整数。但为什么这很重要?这些值都应该是正值,并且低于16位INT_MAX,所以溢出不应该成为问题。我唯一能想到的是(1)文档是错误的(2)当我执行带符号的字节替换时,我没有正确处理符号位。带符号整数的末端转换
我真的有两个问题:
1)当溢出不是一个问题,它不管我读入符号或无符号整数。
2)在有符号值和无符号值之间是否交换端点(即符号位是否需要以不同的方式处理)?
我认为endian转换对于有符号值和无符号值看起来都是一样的,例如,为16位value = value&0xff00 >> 8 | value&0x00ff << 8
。
谢谢
什么编程语言? – bmargulies 2009-12-05 20:33:56
希望你已经得到括号(如果它是C)。 – 2009-12-05 20:43:01