I'm new to bit offsets, but I'm trying to debug the following snippet:
if (!(strcmp(arr[i].GetValType(), "f64")))
{
dem_content_buff[BytFldPos] = tmp_data;
dem_content_buff[BytFldPos + 1] = tmp_data >> 8;
dem_content_buff[BytFldPos + 2] = tmp_data >> 16;
dem_content_buff[BytFldPos + 3] = tmp_data >> 24;
dem_content_buff[BytFldPos + 4] = tmp_data >> 32;
dem_content_buff[BytFldPos + 5] = tmp_data >> 40;
dem_content_buff[BytFldPos + 6] = tmp_data >> 48;
dem_content_buff[BytFldPos + 7] = tmp_data >> 56;
}
I get a warning that lines from "32" to "56" have too much shift. "F64" in the predicate simply means that the data must be 64-bit data.
How to do it?
edit:
I should have added more code.
tmp_data = simulated_data[index_data];
if (!(strcmp(dems[i].GetValType(), "s32")))
{dem_content_buff [BytFldPos] = tmp_data; dem_content_buff [BytFldPos + 1] = tmp_data โ 8; dem_content_buff [BytFldPos + 2] = tmp_data โ 16; dem_content_buff [BytFldPos + 3] = tmp_data โ 24;
}
if (! (strcmp (dems [i].GetValType(), "f64" )))
{ dem_content_buff [BytFldPos] = tmp_data; dem_content_buff [BytFldPos + 1] = tmp_data โ 8; dem_content_buff [BytFldPos + 2] = tmp_data โ 16; dem_content_buff [BytFldPos + 3] = tmp_data โ 24; dem_content_buff [BytFldPos + 4] = tmp_data โ 32; dem_content_buff [BytFldPos + 5] = tmp_data โ 40; dem_content_buff [BytFldPos + 6] = tmp_data โ 48; dem_content_buff [BytFldPos + 7] = tmp_data โ 56;
}
, dem_content_buff ints. 64- ?