Einen schönen guten Tag zusammen,
ich bin hier absolut neu, deswegen bitte ich für kleinere Patzer
schonmal im Vorfeld um Verzeihung.
Da mir Google und Suchfunktion bereits nicht weitergeholfen haben,
versuche ich es diesmal mit einer direkten Frage:
Ich habe ein Array mit 12 Char-Variablen (4 genutzte Bit) welches ich in
ein Array mit 6 Char-Variablen (mit 8 genutzen Bit) umwandeln möchte und
das per Bitshift-Befehl, das sieht dann ungefähr so aus:
----------------------------------------------
1 | #include <stdio.h>
|
2 | #include <stdlib.h>
|
3 |
|
4 | int main(int argc, char *argv[]) {
|
5 | char i;
|
6 | char adr1[12] = {0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xa,0xb,0xc};
|
7 | for(i=0;i<6;i++)
|
8 | adr1[i] = (adr1[2*i] << 4) | (adr1[2*i+1]); //0x1+0x2 = 0x12
|
9 | return 0;
|
10 | }
|
----------------------------------------------
Problem: Sobald die jeweils 1. Char-Variable größer 7 also mehr wie 3
Bits genutzt werden, bekomme ich einen 4-Byte-großen Character heraus.
Kurz gefasst: (0x8 << 4) | 0x4 = 0xffffff84
Nun ist die Frage wie das überhaupt funktionieren kann, da ja eigentlich
ein Character nur 1 Byte groß ist und wie sich dieses Problem beheben
lässt.
Achso, als "Testumgebung" benutze ich momentan Dev-C++ wenn das
irgendwie aussagekräftig ist.
Mit freundlichen Grüßen und mit Danke schon mal im Voraus
Marcus