簡體   English   中英

將 IP 地址轉換為二進制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM