Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมแปลงที่อยู่ IP เป็นเลขฐานสิบหกใน C++


กำหนดโดยอินพุตเป็นค่าที่อยู่ IP และภารกิจคือการแสดงที่อยู่ IP ที่ระบุเป็นเลขฐานสิบหกที่เทียบเท่ากัน

ที่อยู่ IP คืออะไร

ที่อยู่ IP หรืออินเทอร์เน็ตโปรโตคอลเป็นหมายเลขเฉพาะที่อธิบายฮาร์ดแวร์ของคุณที่เชื่อมต่อกับเครือข่ายโดยเฉพาะ อินเทอร์เน็ตหมายถึงผ่านเครือข่ายและโปรโตคอลกำหนดชุดของกฎและข้อบังคับที่ต้องปฏิบัติตามสำหรับการเชื่อมต่อ เนื่องจากที่อยู่ IP เท่านั้นจึงเป็นไปได้ที่ระบบจะสื่อสารกับระบบอื่นผ่านเครือข่าย IP มีสองเวอร์ชันคือ -

  • IPv4(Internet Protocol รุ่น 4)
  • IPv6(Internet Protocol รุ่น 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;
//reverse hexadecimal number
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;
   }
}
//Convert IP address to heaxdecimal
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