繁体   English   中英

在转换IP时修复inet_ntoa中的Endianess错误,显示反向值

[英]Fixing Endianess error in inet_ntoa while converting an IP shows reversed value

以下是将IP从uint32_t转换为IP字符串的代码,但是由于Endianess,它给出了与字符串相反的代码,我该如何克服这一问题。

程序

#include <iostream>
#include <sys/socket.h>
#include <arpa/inet.h>

using namespace std;

int main()
{
  uint32_t ip_in_decimal = 172694014;
  struct in_addr addr1;
  addr1.s_addr = ip_in_decimal;
  std::string bpu_ip_ran = inet_ntoa(addr1);
  std::cout<<bpu_ip_ran<<std::endl;

  return 0;
}

产量

./a.out
1.1.168.192 // Reverse of the IP value 192.168.1.1 

htonl是您的朋友:

addr1.s_addr = htonl(ip_in_decimal);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM