sammen trækning af byte

Tags:    c++

Hej!
Ja den er sikkert nem men, ja glemt hvor dan man gør!

jeg får en 8 bit seriel array ind i min mpu, det skal pakkes om til en 26/32 bit streng til vidersendelse...

Eksempel:

inholdet i indbuf pos 3 og 4 => 12,121 eller 00001100,01111001

Jeg skal på en næm måde have dem truget sammen så jeg får=>0000110001111001 eller ratter sagt værdien => 3193

jeg får en streng på 77 karaktere som jeg skal koblesammen på denne måde enten 2 der skal kobles sammen ( eller hvad det nu lige heder ) eller op til 4 der skal kobles sammen.
Hjælp
Jeg er godt klar over at det skal være en loop af en slags men hvilken...

mvh kim




Indlæg senest redigeret d. 05.12.2012 07:35 af Bruger #17451
4 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Svaret er bitshifting og bitwise or:
Fold kodeboks ind/udC++ kode 


Mht. en hel strøm af data, så skal vi jo vide, hvornår det er 16 bits og hvornår det er 32 bits.



Indlæg senest redigeret d. 05.12.2012 08:10 af Bruger #2695
Cool. At gange med 256 og at venstre skifte 8 bits giver det samme...compileren oversætter nok endda din gangeoperation til et bitskift, for det er hurtigere at udføre.

Jeg har lavet en bette C++ klasse, som nok kan hjælpe dig lidt med at dekode din bytestrøm:

Fold kodeboks ind/udC++ kode 


Output er:
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 05.12.2012 09:22 af Bruger #2695
Hej Robert!
Tak det prøver jeg også... har dog fundet på den her løsning med lidt fidlen fik jeg det til:

samleg_1=test_bit[1]+(test_bit[0]*256);



Du er for sej...
tak jeg ser på det... det er længe siden jeg har rodet med C programmering men det er ved at komme lidt efter lidt... Tak for hjelpen



t