unsigned char[] nach std::string konvertieren?



  • Hallo, ich habe folgende Code:

    std::string str;

    unsigned char mac[6];
    mac[0] = 0x08;
    mac[1] = 0x00;
    mac[2] = 0x06;
    mac[3] = 0xa8;
    mac[4] = 0x00;
    mac[5] = 0x02;

    wie kann ich "mac" nach "str" umwandeln und ausgeben lassen?



  • unsigned char mac[6]; 
    mac[0] = 0x08; 
    mac[1] = 0x00; 
    mac[2] = 0x06; 
    mac[3] = 0xa8; 
    mac[4] = 0x00; 
    mac[5] = 0x02;
    std::ostringstream oss;
    oss << std::hex;
    for (long i = 0; i < 6; ++i)
    {
       oss << mac[i];
    }
    std::string str = oss.str();
    std::cout << str;
    


  • #include <string>
    #include <sstream>
    #include <iomanip>
    
    //...
    
    size_t const items = 6;
    unsigned char mac[items] = {0x08, 0x00, 0x06, 0xA8, 0x00, 0x02};
    
    //...
    
    std::stringstream sstr;
    sstr << std::hex << std::setfill('0');
    for(size_t n = 0; n != items; ++n)
    {
        sstr << std::setw(2) << static_cast<unsigned>(mac[n]);
    }
    
    std::string str = sstr.str();
    


  • ... falls er unter "konvertieren" auch "lesbar machen" versteht.

    Ansonsten:

    string mac("\x08\x00\x06\xa8\x00\x02", 6);
    // oder 
    
    string mac;
    mac.resize(6);
    mac[0] = 0x08;
    mac[1] = 0x00;
    mac[2] = 0x06;
    mac[3] = 0xa8;
    mac[4] = 0x00;
    mac[5] = 0x02; 
    
    // oder 
    string mac;
    mac.push_back(0x08);
    mac.push_back(0x00);
    mac.push_back(0x06);
    mac.push_back(0xa8);
    mac.push_back(0x00);
    mac.push_back(0x02);
    
    // oder ....
    

    (den würde ich dann aber über thetas Weg ausgeben lassen)

    Gruß,

    Simon2.



  • unsigned char test[8];
       std::string s;
       s.assign((char*)&test[0], sizeof(test));
    


  • Danke für eure alle Antworten!

    Die Code von Tachyon hat funktioniert!


Log in to reply