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
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