4 char in 1 int laden
-
Hallo zusammen,
ich weiß leider nicht genau wie man das bezeichnet was ich mache / vor habe deswegen der etwas seltsame Titelchar A[64]; char B[64]; //statt 64 Kopiervorgänge möchte ich nur 16 for (int i = 0; i < 16; i++){ ((int *) A)[i] = ((int *) B)[i]; }Ok das funktioniert soweit, es ist hoffentlich auch verständlich was ich vor habe, nämlich 4 Byte anstatt nur 1 Byte auf einmal zu kopieren
wie sieht der Code aus wenn ich ein 2D Array habe? Hat jemand eine Idee?
char A[2][32]; char B[64]; //statt 64 Kopiervorgänge möchte ich nur 16 for (int j = 0; j < 2; j++){ for (int i = 0; i < 8; i++){ ((int *) A)[j][i] = ((int *) B)[j*8+i]; //? funktioniert nicht //error C2109: Index erfordert ein Array oder einen Zeigertyp } }
-
char A[2][32]; char B[64]={0,}; //statt 64 Kopiervorgänge möchte ich nur 16 for (int j = 0; j < 2; j++){ for (int i = 0; i < 16; i++){ ((int(*)[32]) A)[j][i] = ((int *) B)[j*8+i]; // funktioniert } }
-
deine Lösung gefällt mir! Setze ich so um.
hab in der Zwischenzeit auch ein wenig probiert.
So geht das auch://statt 64 Kopiervorgänge möchte ich nur 16 for (int j = 0; j < 2; j++){ for (int i = 0; i < 8; i++){ ((int *) A)[j*8+i] = ((int *) B)[j*8+i]; } }