Hi Leute,
ich bin gerade dabei, mich unter C/C++ in Sockets einzuarbeiten, um ein kleines Serverprogramm zu schreiben, welches von einem .NET client Programm Daten geschickt bekommt. Die Daten bestehen zum Großteil aus double-Werten, die ich mit dem Bitconverter in Byte-Arrays konvertiere. in meinem Server-Programm will ich die Daten als char-Array auslesen und dann wieder in double konvertieren. Gibt es dazu eine Funktion, die das bewerkstelligt, oder muss ich das selber machen und wenn ja, wie sollte ich das am besten machen? Von einem byte[] (bzw. einem char[]) in einen int zu konvertieren wäre ja trivial, aber double bereitet mir da schon mehr kopfzerbrechen. Eine Idee, die ich hätte, wäre, mir einen Zeiger auf die Ziel double-Variable geben zu lassen, den dann als char * zu casten und dann die Daten in das jeweilige Feld zu schreiben. Würde das gehen? Ist das überhaupt empfehlenswert?
Vielen Dank im Voraus, Paul
Edit:
Hat sich erledigt, ich mache das jetzt mit den Pointern, funktioniert ganz gut. Falls jemand interessiert ist, geht ungefähr so:
ich bin gerade dabei, mich unter C/C++ in Sockets einzuarbeiten, um ein kleines Serverprogramm zu schreiben, welches von einem .NET client Programm Daten geschickt bekommt. Die Daten bestehen zum Großteil aus double-Werten, die ich mit dem Bitconverter in Byte-Arrays konvertiere. in meinem Server-Programm will ich die Daten als char-Array auslesen und dann wieder in double konvertieren. Gibt es dazu eine Funktion, die das bewerkstelligt, oder muss ich das selber machen und wenn ja, wie sollte ich das am besten machen? Von einem byte[] (bzw. einem char[]) in einen int zu konvertieren wäre ja trivial, aber double bereitet mir da schon mehr kopfzerbrechen. Eine Idee, die ich hätte, wäre, mir einen Zeiger auf die Ziel double-Variable geben zu lassen, den dann als char * zu casten und dann die Daten in das jeweilige Feld zu schreiben. Würde das gehen? Ist das überhaupt empfehlenswert?
Vielen Dank im Voraus, Paul
Edit:
Hat sich erledigt, ich mache das jetzt mit den Pointern, funktioniert ganz gut. Falls jemand interessiert ist, geht ungefähr so:
Code:
char * buffer = 0;
int len = cReceive(&buffer); //Die Funktion will einen char **
double val = 0;
for(int i = 0; i<8; i++) //ich gehe hier der Einfachheit halber davon aus, dass mindestens 8 Bytes gelesen wurden und der Double sich am Anfang befindet
((char*)&val)[i] = buffer[i];
Zuletzt bearbeitet: