C ++でIPアドレスをバイトに変換するにはどうすればよいですか?基本的に、IPアドレスを解析するにはどうすればよいですか?たとえば、に等しい文字列がある場合121.122.123.124
。、、、、のようbyte1 = 121
にこれを解析する必要があります。byte2 = 122
byte3 = 123
byte4 = 124
質問する
12872 次
4 に答える
4
関数の使用sscanf()
:
#include <cstdio>
char arr[] = "192.168.1.102";
unsigned short a, b, c, d;
sscanf(arr, "%hu.%hu.%hu.%hu", &a, &b, &c, &d);
于 2012-04-28T19:21:24.547 に答える
4
を使用しinet_aton
ます。
#include <arpa/inet.h>
#include <string>
#include <iostream>
int
main(int argc, char *argv[])
{
std::string s;
in_addr addr;
while(std::cin >> s && inet_aton(s.c_str(), &addr)) {
std::cout << inet_ntoa(addr) << "\n";
}
}
于 2012-04-28T21:01:17.003 に答える
0
これを試して:
char ipstr[] = "121.122.123.124";
char *marker, *ret;
unsigned char b1, b2, b3, b4;
ret = strtok_r(ipstr, ".", &marker);
b1 = (unsigned char)strtod(ret, NULL);
ret = strtok_r(NULL, ".", &marker);
b2 = (unsigned char)strtod(ret, NULL);
ret = strtok_r(NULL, ".", &marker);
b3 = (unsigned char)strtod(ret, NULL);
ret = strtok_r(NULL, ".", &marker);
b4 = (unsigned char)strtod(ret, NULL);
于 2012-04-28T19:09:53.637 に答える