Ich habe an einer C++-Legacy-Anwendung gearbeitet und befinde mich definitiv außerhalb meiner Komfortzone (was gut ist). Ich habe mich gefragt, ob jemand da draußen so freundlich wäre, mir ein paar Tipps zu geben (Wortspiel beabsichtigt).
Ich muss 2 Bytes in einem vorzeichenlosen Char-Array in ein vorzeichenloses Short umwandeln. Die Bytes sind fortlaufend.
Ein Beispiel dafür, was ich zu tun versuche:
Ich empfange eine Zeichenkette von einem Socket und lege sie in ein unsigned char-Array. Ich kann das erste Byte ignorieren und die nächsten 2 Bytes sollten dann in ein vorzeichenloses Zeichen umgewandelt werden. Dies wird auf Windows nur sein, so gibt es keine Big/Little Endian Probleme (die ich bewusst bin).
Hier ist, was ich jetzt habe (funktioniert natürlich nicht):
//packetBuffer is an unsigned char array containing the string "123456789" for testing
//I need to convert bytes 2 and 3 into the short, 2 being the most significant byte
//so I would expect to get 515 (2*256 + 3) instead all the code I have tried gives me
//either errors or 2 (only converting one byte
unsigned short myShort;
myShort = static_cast<unsigned_short>(packetBuffer[1])
0 Stimmen
Was muss dieser kerl jetzt von uns c++ programmierern denken. jeder hat eine andere "richtige" lösung :D
0 Stimmen
Nun, er könnte damit meinen, dass wir C++-Anwender ein schlaues Völkchen sind und die Regeln nach Belieben ändern. Mu ha haaa.
0 Stimmen
Enthält die Eingabe eine Zeichenkette mit Werten von '0'-'9' oder enthält sie Bytes mit Werten von 0-255? Die Dokumentation sagt String, aber es macht keinen Sinn, in diesem Fall mit 256 zu multiplizieren.
0 Stimmen
Ich vermute, dass sie die Binärzahlen 1 bis 9 enthält.