Um aus 8 bits(lsb first) ein byte zu machen verwende ich folgenden Code
1 | int i = 0;
|
2 |
|
3 | int bit;
|
4 | char byte = 0;
|
5 | int c = 1;
|
6 | byte = 0;
|
7 | while(i < 8) {
|
8 | bit = get_bit();
|
9 | uart_puts(intToString(bit, 1));
|
10 | uart_putc(':');
|
11 | byte = byte + (bit*c);
|
12 | uart_puts(intToString(bit*c ,3));
|
13 | uart_putc('+');
|
14 | i++;
|
15 | c *= 2;
|
16 | }
|
17 | //uart_puts(":");
|
18 |
|
19 | uart_puts(intToString(byte, 3));
|
1:1+1:2+0:0+0:0+0:0+0:0+0:0+1:128+65411
Rein theoretisch müsste 131 rauskommen, warum kommt aber 65411 raus,
obwohl nur drei Stellen (uart_puts(intToString(byte, 3));) ausgegeben
werden sollen?