Byte tömbből short szám visszanyerése

Címkék
Byte tömbből short szám visszanyerése
2009-09-02T12:14:47+02:00
2009-09-02T15:38:31+02:00
2022-07-31T20:40:28+02:00
Mekkelek5
Üdv mindenkinek. Egy egyszerű feladatnál akadtam el.

Van egy short típusú (16 bites) számom, ezt akarom byte tömbben tárolni, majd visszakapni. A "mentést" így oldom meg:
recd2[x]=(byte)(adat & 255); x++; recd2[x]=(byte)(adat >> 8); x++;

Ez működik. Készítettem egy teszt programot ami bitenként ellenőrzi a két byte-ot, és tökéletesen ugyanaz tárolódik mint az eredeti szám (már ha jó a tesztem).
A szám visszanyerésével már gondban vagyok. így oldom meg:
adat=(short)((recd2[x+1]<<8)|recd2[x]);

Az alsó byte-ot tökéletesen visszakapom, a felső byte viszont az esetek egy részében tökéletes, tehát visszakapom a számomat, máskor meg látszólag ok nélkül a felső byte minden bit-je 1-re állitódik. De csak az "adat" változóban, a recd2[x+1] tömb értéke tökéletes. Lehet a bitforgatásnak vagy a short konvertálásnak van valami tulajdonsága amiről nem tudok.
Ha valaki segítene azt megköszönném, harmadik napja szenvedek ezzel. Könyvekben semmi használhatót nem találtam, a google sem segített. Lehet van erre beépített függvény is, de azt sem tudom mit keressek, meg gondoltam ilyen egyszerű dolgot csak megoldok magam is .

Ja, vagy 5-10 kódot kipróbáltam, nem csak ezt az egyet, de úgy látom ennek is működnie kellene.
Mutasd a teljes hozzászólást!
A "mentést" így oldom meg:


Hasznalj inkabb ByteBuffer.putShort() meg get()/getShort()-ot!
Mutasd a teljes hozzászólást!

Címkék
abcd