Je suis nouveau bits de décalage, mais je suis en train de déboguer le code suivant:C++ Bits décalage
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;
}
Je reçois un avertissement disant que les lignes avec ont un compte de décalage « 32 » à « 56 » c'est trop grand. Le "f64" dans le prédicat signifie simplement que les données doivent être des données 64 bits.
Comment cela devrait-il être fait?
modifier.
Je aurais dû mettre plus du code dans
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 (MNE [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; }
Donc, maintenant, dem_content_buff
ne contient que des entiers. Est-ce que je ne peux pas utiliser ce tableau pour les données 64 bits?
De quel type est 'tmp_data'? Vous voudrez probablement que ce soit un type 64 bits. –