suma bajtow

Odpowiedz Nowy wątek
2011-09-11 19:26
0

Mam tablicę,

byte[] is = {60,-4,29,22}; // w hex 3CFC1D16 = 1023155478

jestem kiepski z liczenia bajtow, moze mi ktoś pomoże?
Jak wyliczyć int-a z tej tablicy ?

Pozostało 580 znaków

2011-09-11 19:36
bb
0

(is[0] << 24) | (is[1] << 16) | (is[2] << 8) | is[3]

Pozostało 580 znaków

2011-09-11 19:59
ucilala
0

big czy little endian :>?

Pozostało 580 znaków

2011-09-11 20:25
0
bb napisał(a)

(is[0] << 24) | (is[1] << 16) | (is[2] << 8) | is[3]

Ten algorytm jest błędny.
Np. dla takich dwóch tablic: {-128,-67,120,-128} i {-128,-67,121,-128} jest ten sam wynik (-128).

Użyj zwykłego dodawania: (b0<<24) + (b1 << 16) + (b2 << 8) + b3


Registered Linux user #456405 | SCJP 6 | SCWCD 5 | SCBCD 5

Pozostało 580 znaków

2011-09-11 21:37
0

OK, dzieki

(is[0]<<24) + ((is[1]) << 16) + (is[2] << 8) + is[3]; zwraca mi 1006378262

Docelowo musi być tak.

(is[0]<<24) + ((is[1]&0xff) << 16) + (is[2] << 8) + is[3]; 1023155478 i wtedy jest ok

Pozostało 580 znaków

2011-09-11 21:52
0

Ten algorytm jest równie błędny. Maskuj bity:
is[0] << 24 & 0xff000000 | is[1] << 16 & 0xff0000 | is[2] << 8 & 0xff00 | is[3] & 0xff

edytowany 1x, ostatnio: iooi, 2011-09-11 21:53

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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