Sovellukseni nauhoittaa ääntä 16-bitin tarkkuudella. Ääni tallennetaan byte-taulukkoon. Taulukossa esimerkiksi indeksissä [0] on 16:sta bitin eniten merkitsevät bitit ja indeksissä [1] 16:sta bitin vähiten merkitsevät bitit.
Eniten merkitsevän bitin ensimmäinen merkki ilmaisee onko luku positiivinen/negatiivinen: 0 = positiivinen, 1 = negatiivinen.
Ongelmana on saada tuo luku kokonaisuudessa byte-taulukosta ulos. Eli voin lukea tähän malliin: Int x = array[0], mutta tällöin saan vain 8-bittisiä lukuja (max. arvo 127), kun pitäisi saada 16-bittisiä arvoja (max. arvo 36000 jotain).
Kuinka voin yhdistää siis kaksi taulukossa olevaa 8-bittistä lukua yhdeksi 16-bittiseksi luvuksi?
Vielä esimerkki: Indeksi0: 01111111 indeksi1: 01111111
Pitäisi saada 16-bittinen luku 0111111101111111
Eniten merkitsevän bitin ensimmäinen merkki ilmaisee onko luku positiivinen/negatiivinen: 0 = positiivinen, 1 = negatiivinen.
Ongelmana on saada tuo luku kokonaisuudessa byte-taulukosta ulos. Eli voin lukea tähän malliin: Int x = array[0], mutta tällöin saan vain 8-bittisiä lukuja (max. arvo 127), kun pitäisi saada 16-bittisiä arvoja (max. arvo 36000 jotain).
Kuinka voin yhdistää siis kaksi taulukossa olevaa 8-bittistä lukua yhdeksi 16-bittiseksi luvuksi?
Vielä esimerkki: Indeksi0: 01111111 indeksi1: 01111111
Pitäisi saada 16-bittinen luku 0111111101111111
Vastaukset 3
Vanhimmat
x = 256 * array[0] array[1]
Tässä luvulla 256 kertominen vastaa 8 bitin siirtoa vasemmalle (= eniten merkitsevän bitin suuntaan).
Alla on esimerkki siitä miten se tehdään:
int value = (array[0]
Sain pelittämään tuon, ei ollutkaan kovin monimutkainen juttu ;).