> printf("%d\n", (int32_t) *word[0]);
So geht das nicht.
word[0] die Adresse des ersten Eintrags von word[0][0]
das ist also ein uint8_t*
*word[0] jetzt holst du dir dieses 1 Byte
(int32_t) *word[0] und wandelst es zu einem int32_t
Logisch kriegst du nur das 1. Byte. Das ist genau das, was du
geschrieben hast.
Du wolltest vielleicht schreiben
*((int32_t*)word[0])
hast du aber nicht.
Im übrigen schätze ich mal, dass dein Problem einfacher wird, wenn du
das tust, was du scheinbar tun willst: Ein Array von 4-Byte int32_t
Werten anlegen
int32_t Wert[2];
Und an den Stellen an denen du das Array mit den Bytes beschickst,
kümmerst du dich darum, dass du aus den 4 einzelnen Bytes erst mal einen
int32_t machst.