Gast
#2263344
Hallo, ich habe ein 2 Dimensionales Array gsDataBuffer[][] aus 8bit Integer Zahlen. An einer Stelle, die zb. so aussieht: ... 0_ _0_ _0_ _0_ _1_ _1_ _1_ _1 ; 1_ _1_ _1_ _1_ _1_ _1_ _1_ _1 ; ... möchte ich nun 12 Stellen (die mit den 1ern) zu einer 12bit langen Zahl verknüpfen und in einer 16bit Variablen speichern. Als Wert (value) sollte dieser herauskommen 2^12 -1 = 4095 (entspricht 12bit) Dazu folgender Code: Die 2. Dimension (column) ist hier konstant ########################################### ... uint16_t value; uint16_t data_low, data_high; uint8_t position = numChannels - 1 - ((row*3)+color); uint8_t posarray = position*3/2; ... data_high = (((uint16_t)gsDataBuffer[posarray][column])&(15UL)); //liest die ersten 4bit der "oberen" 8bit Zahl ein. posarray++; data_low = ((uint16_t) gsDataBuffer[posarray][column]); //liest alle 8bit der "unteren" 8bit Zahl ein. value = (data_high<<8) + data_low; //Addieren return(value); ########################################### Leider erhalte ich als Ergebnis immer nur das "Low Byte" mit 0b11111111. Wo kann hier der Fehler liegen? Vielen Dank schonmal