Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình chuyển đổi địa chỉ IP sang thập lục phân trong C++

Chuyển địa chỉ IPv4 (dạng a.b.c.d) sang biểu diễn hex 32-bit (0x...). Sử dụng thư viện hàm inet_addr().

Ví dụ

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

Lưu ý: Hàm inet_addr trả về network byte order (big-endian). Cần đảo byte order để có dạng hex chuẩn (little-endian hiển thị). Code dùng sprintf và đảo chuỗi hex.

Ví dụ code

#include <arpa/inet.h>
#include <iostream>
#include <string.h>
using namespace std;

void reverse(char* str) {
    int len = 2; // bo "0x"
    int r = strlen(str) - 2;
    while (len < r) {
        swap(str[len++], str[r--]);
        swap(str[len++], str[r--]);
        r -= 2; // dieu chinh vi tri
    }
}

void convert(int ip_add) {
    char str[15];
    sprintf(str, "0x%08x", ip_add);
    reverse(str);
    cout << str << endl;
}

int main() {
    int ip_add = inet_addr("127.0.0.1");
    convert(ip_add);
    return 0;
}

Kết quả

0x7f000001