正在将IP地址转换为二进制地址



我目前正在将ip地址的每一部分转换为二进制,如果你能告诉我为什么我的代码不起作用,我会很高兴。主要问题是函数ip_bin((;因为它正在将第一个数字正确地转换为二进制,但不知何故,后来它将第一个数添加到第二个数。。。最后两个答案中的情况相同。

#include <iostream>
#include <string>
using namespace std;
string ip, mask;
string ip_string[4];
int ip_int[4], length[4];
void enter();
void get_ip();
void ip_bin();
int main(){
enter();
get_ip();
ip_bin();
return 0;}
void enter(){
cout<<"Enter ip adress: ";
cin>>ip;
cout<<"Enter mask adress: ";
cin>>mask;
}
void get_ip(){
//splitting to sections each number between the ip dots 
for(int i = 0; i<4; i++){
ip_int[i] = stoi(ip.substr(0, '.'));
cout<<ip_int[i]<<endl;
string z = to_string(ip_int[i]);
int ln = z.length();
ip.erase(0, ln+1);
}
}
void ip_bin(){
int i=0, tab[31];
for(int k = 0; k<4; k++){
while(ip_int[k]){
tab[i++] = ip_int[k]%2;
ip_int[k] = ip_int[k]/2;
}
for(int j = i-1; j>=0; j--){
ip_string[k] = ip_string[k] + to_string(tab[j]);
}
length[k] = ip_string[k].length();
if(length[k]<8){
for(int g = 0; g<8 - length[k]; g++){
ip_string[k] = '0' + ip_string[k];
}
}
cout<<ip_string[k]<<endl;
}

}

Idk如果你是这个意思,但如果不是你想要的,那么我会删除评论,不要重复-

#include <iostream>
#include <string>
using namespace std;

string ip, mask;
string ip_string[4];
int ip_int[4], length[4];
void dec();
void enter();
void get_ip();
void ip_bin();
int main(){
enter();
get_ip();
cout <<endl;
dec();
return 0;}
void enter(){
cout<<"Enter ip adress: ";
cin>>ip;
}
void get_ip(){
//splitting to sections each number between the ip dots
for(int i = 0; i<4; i++){
ip_int[i] = stoi(ip.substr(0, '.'));
cout<<ip_int[i]<<" ";
string z = to_string(ip_int[i]);
int ln = z.length();
ip.erase(0, ln+1);
}
}
void  dec() {
int bin =0;
int i=1;
for(int  s=0; s<4; s++)
{
while(ip_int[s] >0 ){
bin += (ip_int[s]%2)*i;
ip_int[s] = ip_int[s]/2;
i*=10;
}
cout <<bin<<endl;
bin = 0;
i=1;
}
}

最新更新