Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 什么是交换有符号整数的endianess的合适方法?_Objective C_C_Cocoa_Endianness_Foundation - Fatal编程技术网

Objective c 什么是交换有符号整数的endianess的合适方法?

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*函数不会在大端体系结构上执行交换。 另一方面

在mac os x上,我一直在使用NSSwap*ToHost函数族来处理无符号整数


对于大小为8、16、32和64的有符号整数,正确的方法是什么?我在其他堆栈溢出帖子中看到了推荐的ntoh*函数,但它们返回无符号整数。

您可以对有符号整数使用相同的方法,只需使用一些强制转换来让编译器安静下来。

如果将值强制转换为无符号整数并返回,则使用这些函数进行有符号尾数交换应该不会有问题。 但是:如果要显式地将小端数据转换为大端数据,则不应使用这些函数,因为ntoh*函数不会在大端体系结构上执行交换。
另一方面,如果您只想确保来自本地计算机的数据被转换为big-endian,而不管本地计算机的endian如何,这些函数都可以很好地执行。

交换只是转换字节,数字是有符号还是无符号都没有区别。