私はCでこのようなコードを持っています:
unsigned char const data[ ] = {0x0a, 0x1d, 0xf0, 0x07};
最終的な値が次のようになるように抽出する必要があります。
0xa1df7
16 進値に少なくとも 1 つのゼロがある場合にのみ、抽出して機能させることができました。
unsigned char const data[ ] = {0x0a, 0xd0, 0xf0, 0x07};
以下のコードを使用します。
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;
}
最後のelse {...} ブロックが面倒なようです。何か案は?ありがとう!