修复 inet_ntoa 中的字节顺序错误,同时转换 IP 显示相反的值
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);
以下是将 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);