Hallo zusammen, ich habe 3 hexwerte in einem Array. dat[0]=0x71 dat[1]=0x10 dat[2]=0x95 und möchte diese in einen Dezimalwert umwandeln. Es müsste also 7409813 ergeben. Ich erhalte jedoch 4245. Ich hätte gedacht dass ich jeweils die Bits um 8 Stellen shiften muss. Im Internet habe ich aber etwas anderes gefunden was ich aber leider nicht verstehe und wohl auch nicht richtig umgesetzt bekomme. Vielleicht kann mir jemand weiterhelfen. Die wichtigen Stellen im Code habe ich mit Bemerkungen versehen. Ich hoffe die Infos sind ausreichend. Gruß Holger Mein Code
1 | |
2 | |
3 | unsigned char data[100],dat[6], a=0,b=0,c=0,d=0; |
4 | unsigned char wert[50]; |
5 | |
6 | while(1) |
7 | {
|
8 | a++; |
9 | data[a] = uart_getchar(); |
10 | |
11 | if (data[a] == 0xFF && data[a-1] ==0x00 && data[a-2] ==0x08 && data[a-3]==0x01) |
12 | {
|
13 | b=1; |
14 | a=5; |
15 | }
|
16 | if (b ==1 && data[a] == 0x69) |
17 | {
|
18 | c=1; |
19 | }
|
20 | if (c ==1 && data[a] != 0x00 && data[a] != 0x01 && data[a] != 0x69) |
21 | {
|
22 | //uart_putchar(data[a]);
|
23 | dat[d]=data[a]; //*****HEX WERT WIRD IN ARRAY übergeben***** |
24 | uart_putchar(dat[d]);//**** die einzelnen Werte sind in Ordnung**** |
25 | uart_putchar(d); |
26 | d++; |
27 | }
|
28 | if (c ==1 && data[a]==0x01) |
29 | {
|
30 | uint32_t zahl = *(uint32_t*)dat;//*****HEX Array in uint32 umwandeln**** |
31 | itoa(zahl,wert,10);//*****zahl in wert konvertieren***** |
32 | uart_putstring(wert);// *****Wert an uart übergeben****** |
33 | c=0; |
34 | b=0; |
35 | a=5; |
36 | d=0; |
37 | }
|
38 | |
39 | if (a >98) |
40 | {
|
41 | a = 0; |
42 | }
|
43 | |
44 | }
|