Я плохо знаком со сдвигающимися битами, но пытаюсь отладить следующий фрагмент:
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;
}
Я получаю предупреждение о том, что строки с «32» по «56» имеют слишком большое число смен. «F64» в предикате означает, что данные должны быть 64-битными.
Как это сделать?
редактирование:
Я должен был добавить больше кода.
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
сейчас содержит только целые числа. Могу ли я также не использовать этот массив для 64-битных данных?