Midlet i socket... pytanka

0

Witam wszystkich. To mój pierwszy post. Mam nadzieje że nie będę zbyt nachalny.

Do rzeczy!
Od pewnego czasu uczę się javy dla urządzeń mobilnych. Znalazłem tekst objaśniający protokół komunikatora gg. Chciał bym się pobawić... ale mam kilka pytań. Na początek odnośnik do tekstu: http://ekg.chmurka.net/docs/protocol.html
A teraz pytanka:

W tekście napisano: "Wszystkie zmienne liczbowe są zgodne z kolejnością bajtów maszyn Intela, czyli Little-Endian. Wszystkie teksty są kodowane przy użyciu zestawu znaków CP1250 (windows-1250). Linie kończą się znakami \r\n.

Przy opisie struktur, założono, że char ma rozmiar 1 bajtu, short 2 bajtów, int 4 bajtów, long long 8 bajtów, wszystkie bez znaku. Używając architektur innych niż i386, należy zwrócić szczególną uwagę na rozmiar typów zmiennych i kolejność bajtów. Poza tym, większość dostępnych obecnie kompilatorów domyślnie wyrównuje zmienne do rozmiaru słowa danej architektury, więc należy wyłączyć tą funkcję.".
Więc jak sprawić by powstał ciąg bajtów zawierający taką struktóre:

struct gg_login70 {
	int uin;              /* mój numerek */
	char hash_type;       /* rodzaj funkcji skrótu hasła */
        char hash[64];        /* skrót hasła */
        int status;           /* status na dzień dobry */
        int version;          /* moja wersja klienta */
        char unknown1;        /* 0x00 */
        int local_ip;         /* mój adres ip */
	short local_port;     /* port, na którym słucham */
        int external_ip;      /* zewnętrzny adres ip */
        short external_port;  /* zewnętrzny port */
	char image_size;      /* maksymalny rozmiar grafiki w KB */
        char unknown2;        /* 0xbe */
	char description[];   /* opis, nie musi wystąpić */
	int time;             /* czas, nie musi wystąpić */
};

?
Mam nadzieje ze zrozumiecie o co mi chodzi :)
Nie wiem też jak zrobić by tekst w formacie windows-1250 był poprawnie wyświetlany na telefonie i odwrotnie, by teksty pisane na fonie były w tym formacie?

Dodam tylko jeszcze że piszę na platformę J2ME.

Liczę na Waszą pomoc. To było by dla mnie bardzo ciekawe doświadczenie.
Proszę o rozwązanie tych problemów oraz jeśli to możliwe, o przykłady.

Z programistycznym pozdrowieniem... cppmaniak xD

0

Mapowanie, ale niestety trzeba samemu zrobić, czyli wbić na sztywno jakąś tablicę z parami CP1250-normalne kodowanie.

0

Aha... a jakie jest to owo "normalne kodowanie"? :)

Bardzo interesuje mnie też odpowiedź na pierwsze pytanko :)

0

UTF-8 jest normalny.

0

Przyszedł piątek... wreszcie czas na programowanko. I pomysł się zrodził. :)

Przedstawię teraz swoją propozycję rozwiązania problemu pierwszego.
Otóż maszyny intela zapisują dane od najmłodszego do najstarszego bajtu. Więc by uzyskać najmłodszy bajt wystarczy:

int%256

Kolejny:

(int >> 8)%256

I tak dalej... Poszczególne wyniki wystarczy zapisać w tablicy bajtów... i wysłać :)
Co myślicie o takim sposobie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1