ip字符串转换为 二进制整数
2014-10-08 19:55
344 查看
[cpp] view
plaincopy
#include<iostream>
#include<string>
#include<stdlib.h>
#include <bitset>
using namespace std;
// 将ip字符串按照 '.'分割
string* ipSplit(string str)
{
string* retSTR = new string[4];
string tmp = "";
int i, count = 0;
for ( i = 0; i < str.length(); i++ )
{
if ( str[i] == '.' )
{
retSTR[count] = tmp;
++count;
tmp = "";
}
else
{
tmp += str[i];
}
}
retSTR[count] = tmp;
return retSTR;
}
// 将十进制数字字符串 转化为 二进制数字字符串
string digit2binary( string digitString )
{
string retSTR = "";
int digit = atoi(digitString.c_str());
while ( digit > 1)
{
if ( digit % 2 )
{
retSTR.insert(0, "1");
}
else
{
retSTR.insert(0, "0");
}
digit /= 2;
}
retSTR.insert(0, "1");
int len = retSTR.length();
while (len < 8)
{
retSTR.insert(0, "0");
++len;
}
return retSTR;
}
// 将二进制字符串转换为 二进制整数
int str2int(string str)
{
int len = str.length();
int intResult = 0;
int tmp = 0;
for (int i = 0; i < len-1; i++)
{
tmp = str.at(i) - '0';
if (tmp) // 为1,左移
{
intResult += ( tmp << (len-1-i) );
}
}
intResult += str.at(i) - '0';
return intResult;
// cout << "int: " << bitset<sizeof(int)*8>(intResult) << endl;
}
// ip字符串转化为 二进制整数
int ip2binary(string ip)
{
string* strArr = ipSplit( ip );
string stringResult = "";
for (int i = 0; i < 4; i++)
{
stringResult += digit2binary( strArr[i] );
}
int intResult = str2int(stringResult);
return intResult;
}
int main(int argc, char* argv[])
{
// string str = "202.114.0.242";
string ip = "202.128.1.255";
cout << "ip: " << ip << endl;
int intResult = ip2binary( ip );
cout << "int: " << bitset<sizeof(int)*8>(intResult) << endl;
return 0;
}
[cpp] view
plaincopy
// main output
[cpp] view
plaincopy
<img src="http://my.csdn.net/uploads/201204/23/1335173052_5042.JPG" alt="">
[cpp] view
plaincopy
plaincopy
#include<iostream>
#include<string>
#include<stdlib.h>
#include <bitset>
using namespace std;
// 将ip字符串按照 '.'分割
string* ipSplit(string str)
{
string* retSTR = new string[4];
string tmp = "";
int i, count = 0;
for ( i = 0; i < str.length(); i++ )
{
if ( str[i] == '.' )
{
retSTR[count] = tmp;
++count;
tmp = "";
}
else
{
tmp += str[i];
}
}
retSTR[count] = tmp;
return retSTR;
}
// 将十进制数字字符串 转化为 二进制数字字符串
string digit2binary( string digitString )
{
string retSTR = "";
int digit = atoi(digitString.c_str());
while ( digit > 1)
{
if ( digit % 2 )
{
retSTR.insert(0, "1");
}
else
{
retSTR.insert(0, "0");
}
digit /= 2;
}
retSTR.insert(0, "1");
int len = retSTR.length();
while (len < 8)
{
retSTR.insert(0, "0");
++len;
}
return retSTR;
}
// 将二进制字符串转换为 二进制整数
int str2int(string str)
{
int len = str.length();
int intResult = 0;
int tmp = 0;
for (int i = 0; i < len-1; i++)
{
tmp = str.at(i) - '0';
if (tmp) // 为1,左移
{
intResult += ( tmp << (len-1-i) );
}
}
intResult += str.at(i) - '0';
return intResult;
// cout << "int: " << bitset<sizeof(int)*8>(intResult) << endl;
}
// ip字符串转化为 二进制整数
int ip2binary(string ip)
{
string* strArr = ipSplit( ip );
string stringResult = "";
for (int i = 0; i < 4; i++)
{
stringResult += digit2binary( strArr[i] );
}
int intResult = str2int(stringResult);
return intResult;
}
int main(int argc, char* argv[])
{
// string str = "202.114.0.242";
string ip = "202.128.1.255";
cout << "ip: " << ip << endl;
int intResult = ip2binary( ip );
cout << "int: " << bitset<sizeof(int)*8>(intResult) << endl;
return 0;
}
[cpp] view
plaincopy
// main output
[cpp] view
plaincopy
<img src="http://my.csdn.net/uploads/201204/23/1335173052_5042.JPG" alt="">
[cpp] view
plaincopy
相关文章推荐
- ip字符串转换为 二进制整数
- java字符串应用之IP地址转换成整数
- 用Shell脚本对IP的字符串与整数形式进行相互转换
- 点分十进制字符串IP与十进制整数相互转换方法
- ip(点分十进制 <==> 二进制整数)之间的转换
- 对于二进制的字符串进行二进制整数转换,并进行二进制输出,前面补0
- ip(点分十进制 <==> 二进制整数)之间的转换
- Linux网络编程--字符串IP和二进制IP转换
- 大整数 转换为 二进制字符串
- bin(x) 将整数x转换为二进制字符串
- 二进制、10进制、16进制整数和字符串转换
- 将一个十进制整数转换为二进制字符串
- java字符串应用之IP地址转换成整数
- Go IP 地址字符串整数/string int 相互转换
- Linux网络编程--字符串IP和二进制IP转换
- 8、编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数, 然后打印出这个十进制整数对应的二进制形式。
- linux 内核中ip字符串与整数相互转换 手动实现inet_aton 与inet_ntoa 的功能
- java字符串应用之IP地址转换成整数
- java字符串应用之IP地址转换成整数
- 如何在字符串形式的IP和整数形式的IP之间转换呢?