2013-09-09 3 views
2

Как взять шестнадцатеричный 0A 25 10 A2 и получить конечный результат от 851.00625? Это необходимо умножить на 0.000005. Я попытался следующий код без успеха:Convert 3 Hex (byte) to Decimal

byte oct6 = 0x0A; 
byte oct7 = 0x25; 
byte oct8 = 0x10; 
byte oct9 = 0xA2; 

decimal BaseFrequency = Convert.ToDecimal((oct9 | (oct8 << 8) | (oct7 << 16) | (oct6 << 32))) * 0.000005M; 

Я не получаю 851.00625 как BaseFrequency.

+0

Не ясно, почему * * Вы ожидали бы эти байты дать 851.00625. У вас есть описание для этого формата в любом месте? –

+2

Должно ли '<< 32' быть' << 24'? – John3136

+1

Bingo John3136. Если вы положите это в ответ, я приму это. –

ответ

4

oct6 будет сдвинуто 8 бит слишком далеко (32 вместо 24)

decimal BaseFrequency = Convert.ToDecimal((oct9 | (oct8 << 8) | (oct7 << 16) | (oct6 << 24))) * 0.000005M;