[英]Converting IP address to binary
我目前正在將 ip 地址的每一部分轉換為二進制,如果你能告訴我為什么我的代碼不起作用,我會很高興。 主要問題是 function 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;
}
}
如果你是這個意思,但如果它不是你想要的,那么我會刪除評論,不要代表 -
#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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.