どのようにしてC++でIPアドレスをバイトに変換できますか?基本的にIPアドレスをどのように解析するのですか?たとえば、私は121.122.123.124
に等しい文字列を持っています。 このように解析する必要があります。byte1 = 121
、byte2 = 122
、byte3 = 123
、byte4 = 124
です。C + +どのようにバイトにIPアドレスを変換するには?
答えて
パターンが一定であれば、数のドット数がなどに点在し、その後、istringstream使用:sscanf()
機能を使用して
#include <sstream>
using namespace std;
int byte1, byte2, byte3, byte4;
char dot;
char *ipaddress = "121.122.123.124";
istringstream s(ipaddress); // input stream that now contains the ip address string
s >> byte1 >> dot >> byte2 >> dot >> byte3 >> dot >> byte4 >> dot;
ありがとうございます。dot = '。'のようなドットを設定する必要はありません。 IPアドレスが12.34.56.123のようなものなら、これは動作しますか? – user1128637
>>演算子は、それが供給する変数の型に基づいてデータを抽出する方法を知っているように、oveloadedです。 char(名前付きドット)を指定すると、ドットがcharとして抽出されます。ドットは単にスキッパーとしてドットとして使用されます。バイト#はintなので、>>は何桁の数字があってもintとして抽出するので、正しく解析されます。 –
このソリューションは有効な入力文字列 "127.1"を受け入れず、無効な入力文字列 "300.1.1.1"を拒否しません。 –
これを試してみてください:
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);
を:
#include <cstdio>
char arr[] = "192.168.1.102";
unsigned short a, b, c, d;
sscanf(arr, "%hu.%hu.%hu.%hu", &a, &b, &c, &d);
手動で文字列をNUL終了するのはなぜですか?コンパイラはあなたのためにそれを行います。 –
ええ、そうです。文字列リテラルから '\ 0'を削除しました。ありがとう –
使用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";
}
}
- 1. IPアドレスをバイト配列に変換するC#
- 2. C++ ulong 4バイトIPアドレスをC#タイプに正しく変換するには?
- 3. ビッグエンディアンのIPアドレスを4バイトのバイナリに変換してPHPで
- 4. IPアドレスをホスト名に変換する
- 5. IPアドレスをCIDRに変換する
- 6. MACアドレスをC#のバイト配列に変換する
- 7. (スタートIP - エンドIP)の範囲をIPにIPアドレスを変換
- 8. どのようにバイナリファイルをバイトに変換しますか?
- 9. 変換のIPアドレス()
- 10. どのようにIPアドレスの変更を検出するには?
- 11. の変換のIPアドレス、
- 12. int32のIPアドレスをルビのオクテットに変換するにはどうすればよいですか?
- 13. どのようにPHPのパブリックIPアドレスにローカルIPアドレスの範囲を比較するには?
- 14. ネイバーMACアドレスをIPアドレスns-3に変換する
- 15. IPアドレスの10進表現をバイナリに変換するにはどうすればよいですか?
- 16. どのようにバイトに変換する*
- 17. Azure予約済みIPアドレス(静的VIP)をパブリックIPアドレスに変換する
- 18. バイトをmbに変換するにはどうすればよいですか?
- 19. CIDRをC#でネットワークとIPアドレスの範囲に変換する方法は?
- 20. IPアドレスをバイナリ(16)文字列に変換するにはどうすればよいですか?
- 21. BigQueryでIPアドレスを整数に変換するにはどうすればよいですか?
- 22. Cのフロートに2バイトまたは3バイトを変換する
- 23. どのようにを変換する:(int)5(バイト)0x05 Java?
- 24. どのように.NET/C#でドメイン名をIPアドレスに解決しますか?
- 25. VB.NETまたはC#でURLにIPアドレスを変換する方法
- 26. ipアドレスを単一の数字に変換する
- 27. pingはどのようにIPアドレスを解決しますか?
- 28. C#バイト配列に変換
- 29. wpf - IPアドレスを変更するには?
- 30. Windows CEマシンのIPアドレスをプログラム的に変更しますか?私は、Windows CEマシンのIPアドレスを変更するにはどうすればよい
デリミタとして '.'を使用して' getline'を調べる価値があります。 – chris
私は一度に1つのcharを読み込もうとしましたが、byte1からbyte2に切り替える方法を理解できませんでした。発見された。 – user1128637