Vložím sem zatím co jsem udělal:
int lat, lon, line_no, i = 0;
float f[12];
unsigned int m[12];
line_no++;
fscanf(fp, "%d %d %f %f %f %f %f %f %f %f %f %f %f %f ", &lat, &lon, &f[0], &f[1], &f[2], &f[3], &f[4], &f[5], &f[6], &f[7], &f[8], &f[9], &f[10], &f[11]);
for (i = 0; i<12; i++) {
f[i]*=100;
m[i] = (unsigned int) round(f[i])+99999;
}; free(f);
for (i = 0; i<sizeof(buf); i++)
{
buf[i] <<= 18;
}
prinf( "buf[i] )
Teď bych chtěl zkopírovat ten integer do buf, tedy aby se ty bity/byty z čísla objevily na konci. Jak na to?
Chtěl bych udělat něco takovýho:
for (i = 0; i<12; i++) {
for (j = 0; j<12; j++) {
f[j]*=100;
m[j] = (unsigned int) round(f[j])+99999;
};
free(f);
for (i = 0; i<sizeof(buf); i++)
buf[i] <<= 18;
memcpy(buf, (char*)&m[i];, 4); /* although sizeof(int) would be better */
}
Ale problém je v tom že to kopíruje po 4 bytech, ale já potřebuju zkopírovat jen 18 bitů, aby se předchozí bity nepřepsaly