S
smertnik
Здравствуйте.
Разъясните пожайлуста или скажите что почитать, что бы понять как работает:
Разъясните пожайлуста или скажите что почитать, что бы понять как работает:
Код:
private void button1_Click(object sender, EventArgs e)
{
byte[] c = { 0x45, 0x00, 0x00, 0x53, 0x63, 0x31, 0x40, 0x00, 0x72, 0x06, 0x7A, 0x76, 0xCE, 0x7F, 0x9B, 0x84, 0xC0, 0xA8, 0x00, 0x51 }; // Заголовок 20 байт
int nn = (int)ToUInt(c, 0, 4); // Возвращает версию протокола
}
public uint ToUInt(byte[] datagram, int offset, int length)
{
uint total = 0;
int byte_index;
int bit_offset;
int bit;
byte b;
for (int i = 0; i < length; i++)
{
bit_offset = (offset + i) % 8; // Как я понял получаем начальный бит?
// С этого момента для меня это какой то ужас :huh:
byte_index = (offset + i - bit_offset) / 8;
b = datagram[byte_index]; // В переменной b хранится нужная информация но только в байтах ?
bit = (int)(b >> (7 - bit_offset));
bit = bit & 0x0001;
if (bit > 0)
{
total += (uint)Math.Pow(2, length - i - 1);
}
}
return total;
}