Hi,
ich möchte gerne 4 uint8_t Variablen in eine uint32_t Variable
konvertieren, folgenden Testcode habe ich geschrieben:
#include <avr/io.h>
#include <stdint.h>
1 | int main() {
|
2 | uint8_t b1, b2, b3, b4;
|
3 | uint32_t w;
|
4 |
|
5 | b1 = 0xBC;
|
6 | b2 = 0x11;
|
7 | b3 = 0x33;
|
8 | b4 = 0x44;
|
9 |
|
10 | w = b1 & 0xFF;
|
11 | w |= b2 << 8;
|
12 | w |= (uint32_t)b3 << 16;
|
13 | w |= (uint32_t)b4 << 24;
|
14 | }
|
Funktioniert eigentlich auch, aber wenn ich b2 auf z.B. A9 abändere,
dann sind die höheren 16 Bit in w immer FFFF. Wieso?
Gruss Daniel