在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