J'ai un code comme celui-ci dans C:valeur Obtenir des LSB de Hex (code C)
unsigned char const data[ ] = {0x0a, 0x1d, 0xf0, 0x07};
J'ai besoin pour l'extraire de telle sorte que la valeur finale est:
0xa1df7
Je n'ai été en mesure d'extraire et de le faire fonctionner si les valeurs hexagonales qui ont au moins 1 zéro:
unsigned char const data[ ] = {0x0a, 0xd0, 0xf0, 0x07};
utilisant le code ci-dessous:
for(int i = 0; i < SIZE; ++i)
{
tmp = data[i];
if ((data[i] <= 0x0F) && (((data[i] & 0x0F) == 0) || (data[i] & 0xF0) == 0)) // one of the hex is zero
{
tmp = ((tmp << 4) >> 4) << N[i];
std::cout << "foo: " << std::hex << tmp << ":" << std::endl;
}
else if ((data[i] >= 0x0F) && (((data[i] & 0x0F) == 0) || (data[i] & 0xF0) == 0))
{
tmp = (tmp >> 4) << N[i];
std::cout << "bar: " << std::hex << tmp << ":" << std::endl;
}
else
{
std::cout << "result: " << std::hex << result << ":" << std::endl;
std::cout << "tmp << 8: " << std::hex << (tmp << 8)<< ":" << std::endl;
result = result | (tmp << 8);
std::cout << "result |= (tmp << 8): " << std::hex << result << ":" << std::endl;
}
result |= tmp;
std::cout << "boo: " << std::hex << result << ":" << std::endl;
}
Il semble que le dernier bloc {...} soit gênant pour moi. Des idées? Merci!
La valeur finale de ce tableau n'a pas de sens. Quel type de valeurs d'entrée sont-elles et pourquoi devraient-elles conduire à cette valeur finale? –
Merci Christoffer. 0xa1df7 est une valeur du tableau tel que chaque '0' est supprimé dans chaque élément du tableau. Pour le cas de {0x0a, 0xd0, 0xf0, 0x07}, la sortie est - 0xadf7. – Rjff
Qu'est-ce que 'N []' et pourquoi ne l'utilisez-vous pas dans la clause 'else' où vous rencontrez des problèmes? –