Pointer auf byte[] als String nach uint8*



  • Hallo,

    bekomme einen Pointer auf ein byte[] in einem String und muss es nach const uint8* casten. Hab es bereits so versucht (und noch auf einigen anderen Wegen)

    const uint8* ptr = (const uint8*)v[9].c_str();
    

    aber das daran hängende Bild wurde nicht angezeigt.

    Jemand Ahnung wie das geht?



  • ich find die beschreibung ein wenig... unbefriedigend ^^

    byte[] was ist byte für nen typedef?
    einem String was für einer? std::string?
    was ist v in deinem bsp.? nen vector/array/... of string?

    was willst du überhaupt machen?

    bb



  • Ok sorry, versuche mich jetzt zu bessern 😉

    v ist vectorstd::string v. Ich brauch für einen Konstruktor, der ein Bild anzeigen soll, einen uint8* auf ein byte[] (muss leider so sein).

    Image(const uint8* data, const uint 32 size)

    v[9] entählt als String den Pointer auf dieses byte[]. Ich merk gerade, size hatte ich falsch berechnet, wie kann ich das dann auslesen?



  • #include <vector>
    #include <string>
    
    void bar(const unsigned char* first, unsigned int size)
    {
    	//;
    }
    
    int main()
    {
    	std::vector< std::string > v (10, "asd");
    
    	const char *tmp = v[0].c_str();
    	bar( reinterpret_cast<const unsigned char*>(tmp), v[0].size() );
    }
    

    sieht so aus, als ob es das machen würde, was du erwartest...

    hört sich aber fast so an, als ob std::string hier das falsche wäre und vll eher std::vector<char> zu nutzen wäre - bzw std::vector<uint8>...

    btw:

    v[9] entählt als String den Pointer auf dieses byte[].

    das ist falsch - vll hast dus auch einfach nur falsch formuliert... aber der satz hat mich beide male sehr verwirrt ^^

    bb



  • das steht an der Stelle in meinem String: [B@10f0d5a
    Ist das kein Pointer auf ein byte[]?



  • es gibt keinen datentyp "byte" in C/C++. Du meinst vllt den Typ char, der dem Javatyp byte entspricht.



  • ahh... na dann sag halt gleich, dass du ne adresse in nem string stehen hast.
    wie kommt die eigtl in nen string? ^^
    auf jeden fall gibts das thema immer mal...

    hex und stringstream können dir da behilflich sein - falls du was fertiges suchst:
    http://www.cpptalk.net/istringstream-hexadecimal-string-value-vt38619.html
    sah auf den ersten blick ganz gut aus

    bb



  • olli--- schrieb:

    es gibt keinen datentyp "byte" in C/C++. Du meinst vllt den Typ char, der dem Javatyp byte entspricht.

    ok, ich bekomme das Ganze durch einen Java-Webservice.

    @unskilled
    dein Ansatz vorher mit

    const char *tmp = v[9].c_str(); 
    Image(reinterpret_cast<const unsigned char*>(tmp), v[9].size());
    

    ging übrigens nicht. Er zeigt mir zumindest auch nichts an.



  • somme_ma schrieb:

    @unskilled
    dein Ansatz vorher mit

    const char *tmp = v[9].c_str(); 
    Image(reinterpret_cast<const unsigned char*>(tmp), v[9].size());
    

    ging übrigens nicht. Er zeigt mir zumindest auch nichts an.

    Japp - deshalb hab ich ja dann gesagt, dass du es hättest anders formulieren müssen, damit ich das verstehe, was du meintest ^^
    außerdem hab ich dir dann noch 2 stichpunkte gegeben und so gar noch nen link, wo du ne fertige lösung siehst...

    bb


Anmelden zum Antworten