Ik lees vanuit een externe DLL (van siemens) een * naar een aantal (1024) structs uit. De struct is alsvolgt:
(tm is een struct met 9 ints, 36 byte groot)
Vanuit deze link ga ik er van uit dat hij 93 bytes groot moet zijn en hij is 96
Echter neemt de unsigned char geen 1 byte in, maar 4.
96 bytes aan data (kol 1=data, kol 2 = nummer (1-97), kol 3 = opmerking):
Echter vraag ik me af hoe dat kan.
C++:
1
2
3
4
5
6
7
8
9
10
| typedef struct { unsigned short BlkType; // Bausteintyp 2 unsigned short BlkNumber; // Bausteinnummer 2 char BlkName[8]; // Bausteinname 8 unsigned char BlkVersion; // Bausteinversion 1 unsigned long BlkLength; // Bausteinlänge 4 struct tm BlkTimestamp1; // Zeitstempel zu der Bausteinnummer 36 struct tm BlkTimestamp2; // Zeitstempel zu der Bausteinnummer 36 unsigned char blkSecurity[4]; // Baustein Schutzstufe 4 } BST_STAT_TYPE; |
(tm is een struct met 9 ints, 36 byte groot)
Vanuit deze link ga ik er van uit dat hij 93 bytes groot moet zijn en hij is 96
Echter neemt de unsigned char geen 1 byte in, maar 4.
96 bytes aan data (kol 1=data, kol 2 = nummer (1-97), kol 3 = opmerking):
Dit is ook dit de data te zien.10 1 Bloktype
0 2
11 3 Bloknummer
0 4
0 5 Naam
0 6
0 7
0 8
0 9
0 10
0 11
0 12
1 13 versie
0 14
0 15
0 16
84 17 Begin lengte
13 18
0 19
0 20
32 21 tm1 sec
0 22
0 23
0 24
17 25 tm1 min
0 26
0 27
0 28
21 29 tm1 uur
0 30
0 31
0 32
26 33 tm1 dag
0 34
0 35
0 36
5 37 tm1 maand
0 38
0 39
0 40
107 41 tm1 jaar -1900
0 42
0 43
0 44
0 45
0 46
0 47
0 48
0 49
0 50
0 51
0 52
0 53
0 54
0 55
0 56 laatste tm1
33 57 begin tm2 sec
0 58
0 59
0 60
10 61 tm2 min
0 62
0 63
0 64
15 65 tm2 uur
0 66
0 67
0 68
16 69 tm2 dag
0 70
0 71
0 72
3 73 tm2 maand
0 74
0 75
0 76
105 77 tm2 jaar-1900
0 78
0 79
0 80
0 81
0 82
0 83
0 84
0 85
0 86
0 87
0 88
0 89
0 90
0 91
0 92 eind tm2
0 93
0 94
0 95
0 96
10 97
Echter vraag ik me af hoe dat kan.
if broken it is, fix it you should