Forum: PC-Programmierung buffer[i] | (buffer[i + 1] << 8)


von Rinaldo Kolb (Gast)


Lesenswert?

Ich habe eine Zeile in c#, die lautet

short sample = (short)(buffer[i] | (buffer[i + 1] << 8));

Was bedeutet das genau, was passiert im Bereich

buffer[i] | (buffer[i + 1] << 8)

?

von DirkB (Gast)


Lesenswert?

Welchen Typ hat buffer?

Ich denke irgendetwas 8-bittiges (char)

Da wird aus zwei 8-Bit Werten ein 16-Bit Wert gebastelt.

Ein Wert wird um 8 Stellen nach Links verschoben (<<) und dann verodert 
( | ).

von Rinaldo Kolb (Gast)


Lesenswert?

var buffer = new byte[4096];

von Rinaldo Kolb (Gast)


Lesenswert?

Wenn ich ein sample habe und das in ein buffer[i] und ein buffer[i + 1] 
umwandeln will, welche Formel muß ich dann für buffer[i] und buffer[i + 
1] nehmen?

von DirkB (Gast)


Lesenswert?

Rinaldo Kolb schrieb:
> var buffer = new byte[4096];

Passt doch 8-Bit.

Von sample nach buffer:
1
buffer[i]   =  sample       & 0xff; // nur die unteren 8 Bit
2
buffer[i+1] = (sample >> 8) & 0xff; // nach rechts schieben und auch nur 8-Bit (die oberen)

von Rinaldo Kolb (Gast)


Lesenswert?

Dankeschön

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.