Typy danych w javie

Forum dotyczące ogólnie pojętego programowania - algorytmów, struktur danych, narzędzi programistycznych, itp - głównie w kontekście komputerów PC.
ODPOWIEDZ
kaliska5
Użytkownik
Posty: 348
Rejestracja: 01 maja 2008, 8:24
Lokalizacja: z nienacka
Kontakt:

Typy danych w javie

Post autor: kaliska5 » 23 wrz 2012, 19:46

Witam.Dłubie ostatnio w Javie i mam mały problem.Potrzebuje przesłać przez port COM dane ale natrafiłem na problem zakresu zmiennych.Byte zajmuje 1bajt(w sam raz) ale może przyjmować wartości -128,+127.Czy mógłby mi ktoś wytłumaczyć w jaki sposób można by zmieścić w bajcie dane 0-255 ?

Awatar użytkownika
edwacc
Użytkownik
Posty: 162
Rejestracja: 14 paź 2008, 10:19
Lokalizacja: świętokrzyskie knieje

Re: Typy danych w javie

Post autor: edwacc » 23 wrz 2012, 20:23

Typ byte w Javie z definicji moze przyjmowac wartosci -128..127.
W przypadku wysylania po RS232 nie ma jednak znaczenia jaka wartosc widzi Java, ale ulozenie bitow, gdyż odbiornik moze to przeczytac jako osmiobitowa wartosc typu "unsigned" (bez stosowania U2). To kwestia "dogadania" sie urzadzen.

Natomiast sa sposoby aby uzyskac 8b wartosci z zakresu 0..255, otoz trzeba umiescic wartosc w typie np. int (ktory ma 32b) i wyslac tylko 8 najmlodszych bitow. Mozna to zrobic np. za pomoca maskowania z wartoscia 0x000F:

Kod: Zaznacz cały

int i = 0xAAAA;
i = i & 0x000F;
//wynik: i = 0x000A
Ale z tego co pamietam biblioteki do obslugi portu com uzywaja typu char, ktory jest 16-bitowy.

Awatar użytkownika
kayron
Użytkownik
Posty: 2054
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 23 wrz 2012, 20:45

e.. z tego co pamiętam to INTIGER jest 16Bitowy, a CHAR 8-bitowy.

ODPOWIEDZ