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 Stringwas für einer? std::string?
was istvin 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 ausbb
-
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 mitconst 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 mitconst 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