Objective c 什么是交换有符号整数的endianess的合适方法?
在mac os x上,我一直在使用NSSwap*ToHost函数族来处理无符号整数Objective c 什么是交换有符号整数的endianess的合适方法?,objective-c,c,cocoa,endianness,foundation,Objective C,C,Cocoa,Endianness,Foundation,在mac os x上,我一直在使用NSSwap*ToHost函数族来处理无符号整数 对于大小为8、16、32和64的有符号整数,正确的方法是什么?我在其他堆栈溢出帖子中看到了推荐的ntoh*函数,但它们返回无符号整数。您可以对有符号整数使用相同的方法,只需使用一些强制转换来让编译器安静下来。如果将值强制转换为无符号整数并返回,则使用这些函数进行有符号尾数交换应该不会有问题。 但是:如果要显式地将小端数据转换为大端数据,则不应使用这些函数,因为ntoh*函数不会在大端体系结构上执行交换。 另一方面
对于大小为8、16、32和64的有符号整数,正确的方法是什么?我在其他堆栈溢出帖子中看到了推荐的ntoh*函数,但它们返回无符号整数。您可以对有符号整数使用相同的方法,只需使用一些强制转换来让编译器安静下来。如果将值强制转换为无符号整数并返回,则使用这些函数进行有符号尾数交换应该不会有问题。 但是:如果要显式地将小端数据转换为大端数据,则不应使用这些函数,因为ntoh*函数不会在大端体系结构上执行交换。
另一方面,如果您只想确保来自本地计算机的数据被转换为big-endian,而不管本地计算机的endian如何,这些函数都可以很好地执行。交换只是转换字节,数字是有符号还是无符号都没有区别。