我将如何将IP地址转换为C++字节?基本上我该如何解析IP地址?例如,如果我有一个字符串等于121.122.123.124
。 我需要解析这样的byte1 = 121
,byte2 = 122
,byte3 = 123
,byte4 = 124
。C++如何将IP地址转换为字节?
回答
如果图案是恒定的,数点数点等,然后使用istringstream:
#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 2012-04-28 19:41:03
>>运算符是开发的,它知道如何根据您提供的变量的类型提取数据。由于您提供了一个char(名为dot),因此将该点提取为char。点被用作点队长。 byte#是一个int,所以不论有多少数字,>>都会将它作为一个int来提取,所以,是的,它会正确解析。 – 2012-04-28 21:03:58
此解决方案不接受有效输入字符串“127.1”,并且不会拒绝无效输入字符串“300.1.1.1”。 – 2012-04-28 21:12:08
试试这个:
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);
使用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);
你为什么手动NUL终止你的字符串?编译器会为你做这件事,你知道。 – 2012-04-28 19:35:18
是的,你说得对。我已经从字符串文字中删除了'\ 0'。谢谢 – 2012-04-28 19:37:38
使用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地址转换为DWORD?
- 2. 转换IP地址字节在Python
- 3. 将字节数组转换为IP地址
- 4. 将IP或MAC地址从字符串转换为字节数组(Arduino或C)
- 5. 如何将IP地址转换为与VB.NET或C#的URL#
- 6. 如何将整数数组转换为C++中的IP地址?
- 7. Java:如何将MySQL DECIMAL(39,0)IP地址转换为字符串
- 8. 如何将IP地址转换为二进制(16)字符串?
- 9. 如何将字符串转换为IP地址,反之亦然
- 10. 如何正确地将C++ ulong 4字节的IP地址转换为C#类型?
- 11. 如何将字符串Mac地址转换为字节数组
- 12. 将号码转换为IP地址(v4)
- 13. 将int转换为IP地址
- 14. 转换IP地址的字节C#数组
- 15. 在Python中将IP地址字符串正好转换为4个字节
- 16. 将邻居MAC地址转换为IP地址ns-3
- 17. 如何将默认网关的私有IP地址转换为C#中的公共IP地址
- 18. 如何将字节[]转换为字节[]
- 19. 如何将IP地址转换为国家?
- 20. 如何将静态IP地址转换为新域名
- 21. 如何手动将整数转换为Ruby中的IP地址
- 22. 如何在Android Java中将MAC地址转换为IP?
- 23. 如何将192,168,1,2,7,138转换为IP地址192.168.1.2的端口1930
- 24. UNIX:如何将IP地址转换为二进制代码
- 25. 如何将IP地址转换为BigQuery中的整数?
- 26. Ruby:如何将ipv6的uo地址转换为ipv4的ip地址?
- 27. 将字符串转换为IP地址时输出错误
- 28. 将字符串转换为IP地址(android)
- 29. Python将Base64编码的IP地址转换为十进制IP地址
- 30. MAC地址到IP转换
'getline'以'.'作为分隔符值得研究。 – chris 2012-04-28 19:07:05
我曾尝试读取一个字符,但我无法弄清楚如何让它从字节1切换到字节2等等。被找到。 – user1128637 2012-04-28 19:43:03