C 如果使用已在主机字节顺序中的整数调用ntohl(),会发生什么情况?

C 如果使用已在主机字节顺序中的整数调用ntohl(),会发生什么情况?,c,endianness,C,Endianness,如果我对已按主机字节顺序排列的整数使用ntohl(),会导致任何问题吗 如果不是,那么ntohl()函数如何知道其参数已按主机字节顺序排列?您的问题没有任何意义。对于ntohl没有高阶或低阶 如果系统的端度与网络顺序相同,则它将不起任何作用 否则它会交换东西 你的问题毫无意义。对于ntohl没有高阶或低阶 如果系统的端度与网络顺序相同,则它将不起任何作用 否则它会交换东西 它不知道。它假定给定了一个网络字节顺序的整数,并在必要时将其转换为主机,仅此而已。它不知道。它假定给定了一个网络字节顺序

如果我对已按主机字节顺序排列的整数使用ntohl(),会导致任何问题吗


如果不是,那么ntohl()函数如何知道其参数已按主机字节顺序排列?

您的问题没有任何意义。对于
ntohl
没有高阶或低阶

  • 如果系统的端度与网络顺序相同,则它将不起任何作用
  • 否则它会交换东西

    • 你的问题毫无意义。对于
      ntohl
      没有高阶或低阶

      • 如果系统的端度与网络顺序相同,则它将不起任何作用
      • 否则它会交换东西

      • 它不知道。它假定给定了一个网络字节顺序的整数,并在必要时将其转换为主机,仅此而已。

        它不知道。它假定给定了一个网络字节顺序的整数,并在必要时将其转换为主机,仅此而已。

        您会问“如果我对整数调用两次ntohl(),是否会导致问题?”

        答案是“是的。”

        如果您考虑函数的名称,这应该是显而易见的。它被命名为“网络到主机长”。调用此函数后,整数现在是主机字节顺序,而不是网络字节顺序。

        您会问“如果我对整数调用两次ntohl(),是否会导致问题?”

        答案是“是的。”


        如果您考虑函数的名称,这应该是显而易见的。它被命名为“网络到主机长”。调用此函数后,整数现在是主机字节顺序,而不是网络字节顺序。

        是的,这就是我想问的。谢谢:)对不起sttupid问题。是的,这就是我想问的。谢谢:)对不起sttupid问题。如果将数字乘以-1会发生什么,两次?@hexa:没有要求
        ntohl
        order-2。如果主机端性更奇怪,可能会搞得一团糟。@R。。一定很奇怪。你知道这样一个平台/拱门吗?不知道,我怀疑它是否存在,但这仍然不是一个要求。如果你将一个数字乘以-1,两次会发生什么?@hexa:没有要求
        ntohl
        为2阶。如果主机端性更奇怪,可能会搞得一团糟。@R。。一定很奇怪。你知道这样一个平台/拱门吗?不,我怀疑它是否存在,但它仍然不是必需的。当然,主机字节顺序可能与网络字节顺序相同,在这种情况下…@Roddy:在这种情况下,根本不需要调用该函数。当然,主机字节顺序可能与网络字节顺序相同,在这种情况下…@Roddy:在这种情况下,根本不需要调用函数。除了代码不再是可移植的。