003
14.06.2008, 20:48 Uhr
0xdeadbeef
Gott (Operator)
|
Heh. Die Daten liegen so im Speicher, wie der Prozessor sie verarbeiten kann, in deinem Fall little endian. htons konvertiert einen 16-bit-Integer (uint16_t) nach Netzwerk-Endian, d.h. big endian. Wenn es das ist, was du willst,
C++: |
#include <arpa/inet.h> // ntohs etc. #include <stdint.h> // uint16_t etc.
// ...
uint16_t x = 123; y;
y = htons(x);
|
Ich würde auch dein Array explizit auf uint16_t umstellen. Zwar ist auf den meisten heute gängigen Plattformen unsigned short 16 bit lang, aber der C-Standard garantiert das nicht, und es kann sich in der Zukunft locker auch mal ändern - so geschehen mit int auf x86-64-Maschinen. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |