char->Qstring un zurück
Verfasst: 6. Oktober 2010 00:05
Hallo habe eine Hasfunktion, diese erwartet als input char* und die länge als int. Ich habe das Problem das ich im Vorfeld nur einen Qstring habe, welchen den string darstellt, welche der hashfunktion übergeben werden soll, und somit nach char* gecastet werden muss.
Meine includes:
#include <QFile>
#include <QProcess>
#include <QTextStream>
#include <QDebug>
#include "mainwindow.h"
#include <string>
#include <sstream>
das ich hab fologendermaßen gelöst:
das scheint soweit zu funktionieren.
Dies wird nun der Hashfunktion übergeben, welche einen unsigned char* zurückliefert.
Das was ich bis dato zurückbekomme scheint schon nicht korrekt zu sein, bzw nucht richtig formatiert. Da ich den identsichen Code in VS2008 nutze und er dort funktioniert liegts wohl nicht an der funktion selbst.
ICh spiele schon die ganze zeit mit der formatierung rum, krieg aber nicht das ergebnis was ich haben will. Es soll einen 16 byte string als ergebnis enstehen. Im Debug ist zu sehen das ein 16 Bit string vorhanden ist, aber der inhalt varriert. Der string hat das format:
"021\239\123\256\276...\276"
weiss auch nicht sind die flashes hier alles quotes? das würde erklären warum nur das erste zeichen der 16 bytes aus dem array ausgegeben wird. Hier mein code bisher, wo aber nur grütze rauskommt an ende. Ich caste nun schon direkt nach (char*)
weiss jemand wie ich das casten muss damit ich wieder einen string aus den werten erhalte?! Es sind auch nicht druckbare zeichen dabei im chararray, aber das sollte ja nicht schlimm sein.
das ganze soll nachher wieder in ein QString, weil ich damit eine Datei öffnen will.
also QString->char*->hashfunk->unsigned char*->char*->QString
Vielen Dank im vorraus[/code]
Meine includes:
#include <QFile>
#include <QProcess>
#include <QTextStream>
#include <QDebug>
#include "mainwindow.h"
#include <string>
#include <sstream>
das ich hab fologendermaßen gelöst:
Code: Alles auswählen
QString test_qs = "TEST";
QByteArray bytes = test_qs.toLocal8Bit();
char *data_t = new char[bytes.size() + 1];
strcpy(data_t, bytes.data());
Dies wird nun der Hashfunktion übergeben, welche einen unsigned char* zurückliefert.
Code: Alles auswählen
hashfunk(data_t, strlen(data_t));
ICh spiele schon die ganze zeit mit der formatierung rum, krieg aber nicht das ergebnis was ich haben will. Es soll einen 16 byte string als ergebnis enstehen. Im Debug ist zu sehen das ein 16 Bit string vorhanden ist, aber der inhalt varriert. Der string hat das format:
"021\239\123\256\276...\276"
weiss auch nicht sind die flashes hier alles quotes? das würde erklären warum nur das erste zeichen der 16 bytes aus dem array ausgegeben wird. Hier mein code bisher, wo aber nur grütze rauskommt an ende. Ich caste nun schon direkt nach (char*)
Code: Alles auswählen
char* uzu = (char*)Hashfunk( data_t, strlen(data_t));
das ganze soll nachher wieder in ein QString, weil ich damit eine Datei öffnen will.
also QString->char*->hashfunk->unsigned char*->char*->QString
Vielen Dank im vorraus[/code]