Преобразование байтов в числа - C#
Формулировка задачи:
Привет. помогите пожалуйста разобраться с форматом чисел, подозреваю что чего-то не знаю про C#, никогда на нем не программировал.
Есть некий протокол обмена, полученый снифером.
В нем выделено и найдено все, за исключением способа передачи целого числа. Я точно знаю что в программу приходит по сети, и что она показывает на экране. Как из одного получить другое - ума не приложу.
Примеры:
как из F4 03 (16-я система) получить 500 (в десятичной системе)
как из С4 13 получить 2500
как из 9С 12 получить 2332
как из 80 13 получить 2432
и так далее.
Вот еще головоломка - из
F2 DA A5 02 получить 4812146
!!! Что интересно, форматы double прекрасно читаются, из чего я делаю вывод что никакого специального шифрования в проге не применяется. Затык возможно где-то в приведении типов. Пример нормального double: пришло A4 70 3D 0A D7 83 5C 40, получил 114.06 (как и надо). С помощью дизасемблера получил следующие строки: Output = new double?((double) Input.Value) где Input - входящая переменная типа long, Output - типа double КАК ЭТО из Input=80 13 делает Output=2432 ??? (ничего противозаконного, хочу баг пофиксить в проге которая уже не поддерживается)
Что интересно,
Если приходит 64 получается 100.
То есть однобайтовые числа никакому преобразованию не подвергаются.
Решение задачи: «Преобразование байтов в числа»
textual
Листинг программы
static byte[] Reverse(byte[] dwOriginalBytes) { byte[] dwBuffer = new byte[dwOriginalBytes.Length]; for (int i = 0; i < dwBuffer.Length; i++) dwBuffer[(dwBuffer.Length - i) - 1] = dwOriginalBytes[i]; return dwBuffer; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д