Typy danych w javie
Typy danych w javie
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 ?
Re: Typy danych w javie
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:
Ale z tego co pamietam biblioteki do obslugi portu com uzywaja typu char, ktory jest 16-bitowy.
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