在C ++中将IP地址转换为十六进制的程序

使用输入作为IP地址值给出,任务是将给定IP地址表示为其十六进制等效项。

什么是IP地址

IP地址或Internet协议是一个唯一编号,用于唯一描述您连接到网络的硬件。Internet是指通过网络和协议定义的一组连接必须遵循的规则和规定。仅由于IP地址,一个系统就有可能通过网络与另一个系统通信。IP有两个版本,分别是-

  • IPv4(Internet协议版本4)

  • IPv6(Internet协议版本6)

IP地址表示为数字序列,格式为-

151.101.65.121

对于此转换,下面的程序使用的是针对互联网操作创建的头文件“ arpa / inet.h”

示例

Input-: 127.0.0.1
Ouput-: 0x7f000001
Input-: 172.31.0.2
Output-: 0xac1f0002

算法

Start
Step1-> Declare function to reverse
   void reverse(char* str)
      set int len = 2
      set int r = strlen(str) – 2
      Loop While (len < r)
         call swap(str[len++], str[r++])
         Call swap(str[len++], str[r])
         Set r = r – 3
      End
   End
Step 2-> Declare function to convert IP address to hexadecimal
   void convert(int ip_add)
      declare char str[15]
      call sprintf(str, "0x%08x", ip_add)
      call reverse(str)
      print str
step 3-> In main()   declare int ip_add = inet_addr("127.0.0.1")
   call convert(ip_add)
Stop

示例

#include <arpa/inet.h>
#include <iostream>
#include <string.h>
using namespace std;
//反十六进制数
void reverse(char* str) {
   int len = 2;
   int r = strlen(str) - 2;
   while (len < r) {
      swap(str[len++], str[r++]);
      swap(str[len++], str[r]);
      r = r - 3;
   }
}
//将IP地址转换为十六进制
void convert(int ip_add) {
   char str[15];
   sprintf(str, "0x%08x", ip_add);
   reverse(str);
   cout << str << "\n";
}
int main() {
   int ip_add = inet_addr("127.0.0.1");
   convert(ip_add);
   return 0;
}

输出结果

如果我们运行以上代码,它将在输出后产生

0x7f000001