//GetBit SetBit 函数见上一篇
void SetValue(uchar* data, int startbit, int length, qulonglong value, int type)
{
if (MOTOROLA == type)
{
startbit = startbit + 1 - length;
}
for (int i = 0; i < length; i++)
{
bool bSet = ((value >> i) & 0x1u);
if (bSet)
{
SetBit(data, startbit + i);
}
else
{
ClearBit(data, startbit + i);
}
}
}
unsigned long long GetValue(uchar* data, int startbit, int length, int type)
{
qulonglong result = 0;
if (MOTOROLA == type)
{
startbit = startbit + 1 - length;
}
for (int i = 0; i < length; i++)
{
result += ((qulonglong)(GetBit(data, startbit+i))<< i);
}
return result;
}