Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2016, 17:38   #1
dimonsky
 
Регистрация: 10.04.2009
Сообщений: 4
По умолчанию преобразование числа

Привет. помогите пожалуйста разобраться с форматом чисел, подозреваю что чего-то не знаю про 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 ???

(ничего противозаконного, хочу баг пофиксить в проге которая уже не поддерживается)
dimonsky вне форума Ответить с цитированием
Старый 08.10.2016, 22:52   #2
dimonsky
 
Регистрация: 10.04.2009
Сообщений: 4
По умолчанию

Что интересно,
Если приходит 64 получается 100.
То есть однобайтовые числа никакому преобразованию не подвергаются.
dimonsky вне форума Ответить с цитированием
Старый 08.10.2016, 23:07   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

упаковка VarInt, но алгоритм не один существует.
тот что применен в ProtoBuf не подходит.

код что вы посмотрели не имеет отношения к целым.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.10.2016, 00:27   #4
dimonsky
 
Регистрация: 10.04.2009
Сообщений: 4
По умолчанию

Спасибо за наводку!!!!!!
буду искать алгоритм в инете.
dimonsky вне форума Ответить с цитированием
Старый 09.10.2016, 00:53   #5
dimonsky
 
Регистрация: 10.04.2009
Сообщений: 4
По умолчанию

Нашел решение ))
https://techoverflow.net/blog/2013/0...ntegers-in-cc/
dimonsky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование часов в числа, а так же преобразование время PeMeHb Microsoft Office Excel 5 19.10.2014 17:04
Преобразование числа Dmitry_Web Помощь студентам 1 10.08.2012 18:44
преобразование числа в символ в C++ Karina89 Помощь студентам 6 26.11.2011 00:23
преобразование числа Dim_Ka Помощь студентам 0 28.05.2011 11:32
преобразование числа в hex fize Помощь студентам 20 27.11.2009 19:45