Witam!
Piszę sobie program, który wysyła dane przez sieć do serwera. Próbuję jakoś umieścić dane z typu short oraz long w buforze, ale coś tu nie działa. Dowiedziałem się w Beej's Guide to Network Programming, że następujący sposób powinien zachować wartość zmienny short w buforze char. Niestety, kiedy uruchomię ten przykładowy program, jako wynik dostaję niespodziewaną wartość 241, zamiast 753.
Oto mój program:
int main(int argc, char *argv[]) {
unsigned char buf[1024];
unsigned short n=753;
buf[0]=(unsigned char) n >> 8;
buf[1]=(unsigned char) n;
std::cout << (unsigned short) (buf[0] << 8 | buf[1]) << std::endl;
return 0;
}
Nie ma pojęcia dlaczego to nie działa, przecież ten kod jest prosto z przykładu. Używam Mac OS X 10.5.6 i gcc 4.0.
Proszę o pomoc! :(