maxxle
01-12-2005, 14:11
Hallo!
Folgendes Problem
Ich muss in ein 256Bit Feld unterschiedliche Ints unterbringen.
z.b. An Position 45 hört der erste Int auf, an Position 126 hört der zweit Int auf.
1. wie kann ich genau 256Bit alllozieren
2. Die Ints werden geshiftet und dann mit dem Feld verodert
Mein Lösungsansatz stark verkürzt:
#define SHIFT 64;
int64_t * feld = (int64_t *)calloc(4, int64_t);
int64_t * test = (int64_t *)calloc(4, int64_t);
*(test+3) = 0x1;
test <<| SHIFT; // HIER GIBTS WAS AUF DIE NUSS, Wenn SHIFT>63
feld |= test;
Ich habs schon mit memcpy versucht, das hat aber auch nicht wirklich weitergeholfen.
Das Problem hierbei ist, das ich zwar einen einfach Int an die letzte Position des feldes hinkopieren kann. Ich kann aber leider nicht weiter wie 63 mal shiften, weil der Wert dann aus dem ersten int64 rausfällt.
Ich brauche also 256Bit Speicher am Stück!
mfg
maxxle
Folgendes Problem
Ich muss in ein 256Bit Feld unterschiedliche Ints unterbringen.
z.b. An Position 45 hört der erste Int auf, an Position 126 hört der zweit Int auf.
1. wie kann ich genau 256Bit alllozieren
2. Die Ints werden geshiftet und dann mit dem Feld verodert
Mein Lösungsansatz stark verkürzt:
#define SHIFT 64;
int64_t * feld = (int64_t *)calloc(4, int64_t);
int64_t * test = (int64_t *)calloc(4, int64_t);
*(test+3) = 0x1;
test <<| SHIFT; // HIER GIBTS WAS AUF DIE NUSS, Wenn SHIFT>63
feld |= test;
Ich habs schon mit memcpy versucht, das hat aber auch nicht wirklich weitergeholfen.
Das Problem hierbei ist, das ich zwar einen einfach Int an die letzte Position des feldes hinkopieren kann. Ich kann aber leider nicht weiter wie 63 mal shiften, weil der Wert dann aus dem ersten int64 rausfällt.
Ich brauche also 256Bit Speicher am Stück!
mfg
maxxle