BYTE-Range in string



  • hallo,

    kann mir jemand sagen, wie ich eine BYTE-Range in einen std::string konvertieren kann?

    Danke,

    Gruß, Amalthea



  • über den konstruktor:

    string s(begin, end);



  • Hab das so implementiert:

    in t_data stehen die daten in binärer form...

    std::string 
    dcHelperFunctions::ByteRangeToString
    (
       BYTE* t_data,
       unsigned short t_offset,
       unsigned short t_length
    )
    {
       std::string res( t_data[t_offset], t_data[t_length] );
    
    	return res;
    }
    

    Irgendwie müssen die binär daten ja noch umgewandelt werden...

    Gruß,
    Amalthea



  • Vielleicht noch zum besseren Verständnis...

    ich hab folgenden Code in C# und muss den in C++ umsetzen:

    byte[] data;
    	int offset;
    	int length;
    
    	string res;
    	Encoding ascii = Encoding.ASCII;
    
    	char[] asciiChars = new char[ascii.GetCharCount(data, offset, length)];
    	ascii.GetChars(data, offset, length, asciiChars, 0);
    	res = new string(asciiChars);
    
    }
    

    Die Encoding Klasse gibt es wohl unter C++ in Verbindung mit .Net-Framework auch. Da ich mich aber mit .Net nicht auskenne, wäre ich glücklich, wenn es auch ohne geht.

    Gruß,
    Amalthea



  • Amalthea schrieb:

    Hab das so implementiert:

    in t_data stehen die daten in binärer form...

    std::string 
    dcHelperFunctions::ByteRangeToString
    (
       BYTE* t_data,
       unsigned short t_offset,
       unsigned short t_length
    )
    {
       std::string res( t_data[t_offset], t_data[t_length] );
    
    	return res;
    }
    

    ich glaube du willst eher:

    return string(&data[offset], &data[offset+length]);
    //oder gleich
    return string(data+offset, data+offset+length);
    

    ob das ne funktion wert ist, ist ne andere frage...

    wie das jetzt encodiert werden soll weiß ich nicht, kenne kein C# bzw. diese Encoding-Klasse.



  • Hallo DrGreenthumb,

    danke, das hat mir auf jeden Fall schon mal weitergeholfen!

    Gruß,
    Amalthea


Anmelden zum Antworten