|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
писать начали после того как ушел. В общем сделал так - получаю 3 хекса с прибора (4 зануляем). С помощью ToSingle привожу это к формату IEEE 754 (32 b). точность выше - не смертельно. после этого необходимо было обсчитать сумму хексов с контрольной суммой. То есть сложить хексы. Ради этого перевел хексы в инт, сложил, затем перевел обратно. И теперь могу сравнить сумму и контрольную сумму. правда пришлось и суммы хексов откусить первый символ (но это так, нюансы). Про библиотеку халф слышал, даже пытался пользоваться. Только вот незадача - данные какие-то больно левые получаются. Может кто знает как правильно ей пользоваться, напишите пожалуйста, с ней попробую. Только описание максимально понятное. Задача следующая - 4 хекса привести к виду десятичного числа. про быдлокодера - все чаще слышу, что скорость разработки оправдывает не самый красивый код. на самом деле я далеко не гуру, но пытаюсь профессионально расти каждый день и писать как можно более эффективно. Готов обучаться у мастеров. ну вот все ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2014, 07:36 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
дс53, а зачем такой длинный код? Код: c# 1.
data[0] - байтовое представление хекса. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2014, 07:40 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
des1roer, Вы смысловую нагрузку получаемых данных опишете или это секрет за семью печатями? По поводу использования библиотеки Half - я же привёл пример, чем он не угодил? Кроме того библиотека имеет открытый код - вполне себе даже нормально документированный, чего не хватает-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2014, 08:07 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
des1roer... про быдлокодера - все чаще слышу, что скорость разработки оправдывает не самый красивый код...Не общайтесь с такими людьми, бегите от них... Скорость разработки зависит только от наличия денег и трудовых ресурсов, а не от красивости кода. Код должен быть не красивым, а решать конкретную задачу и при этом он должен быть на достаточном уровне оптимален и легко сопровождаем, а это само по себе означает, что код не должен быть говнокодом... PS. Кстати, пример нормального кода - как раз и есть в библиотеке Half - поизучайте, коль скоро Вы только учитесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2014, 08:13 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
des1roer Код: c# 1.
data[0] - байтовое представление хекса. Если datа имеет тип byte[], то data[0] не "байтовое представление хекса", а просто байт. То есть число. И с ним можно делать сложение без всяких преобразований как уже говорил Pallaris 16505688 . Если все же необходимо пребразование, то можно короче записать: Код: c# 1.
Подумай также над таким примером: Код: c# 1. 2.
Отличаются ли в памяти переменные b1 и и2? des1roerС помощью ToSingle привожу это к формату IEEE 754 (32 b). Покажи как именно ты это делаешь. des1roerРади этого перевел хексы в инт, сложил, затем перевел обратно. des1roerИ теперь могу сравнить сумму и контрольную сумму. правда пришлось и суммы хексов откусить первый символ (но это так, нюансы) Это не нюансы. Если у суммы требуется отрезать символ(!), то ты делаешь что-то не то. des1roerПро библиотеку халф слышал, даже пытался пользоваться. Только вот незадача - данные какие-то больно левые получаются. Может кто знает как правильно ей пользоваться, напишите пожалуйста, с ней попробую. Только описание максимально понятное. Объясни структуру и смысл данных которые ты получаешь. Иначе толку от примеров будет мало. des1roerЗадача следующая - 4 хекса привести к виду десятичного числа. Это зависит от того что эти 4 байта из себя представляют и в каком порядке они идут (от младшего к старшему или наоборот). Вероятно тебе нужен класс BitConverter . des1roerвсе чаще слышу, что скорость разработки оправдывает не самый красивый код Не оправдывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2014, 10:52 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
млин из связки F0-6D-3E по своему tosingle получаю 0,2323608 , что похоже на истину, а вот метод Half actual = Half.ToHalf(b, 0); дает -8192 что явно не правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2014, 12:01 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2014, 12:09 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
что обрезаю символ - так это нормально. контрольная сумма передается 2 последних символа, а при сложении 6 знаков получается 3х значное число ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2014, 12:13 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
des1roerиз связки F0-6D-3E по своему tosingle получаю 0,2323608 , что похоже на истину, а вот метод Half actual = Half.ToHalf(b, 0); дает -8192 что явно не правильно half занимает два байта, single 4 байта. Само собой результаты будут разными. Это значит что у тебя не half precision число и тип Half тебе не нужен. des1roer Код: c# 1.
В чем смысл преобразования числа в строку? des1roerчто обрезаю символ - так это нормально. контрольная сумма передается 2 последних символа, а при сложении 6 знаков получается 3х значное число Твоя терминология ставит меня в тупик. Число состоит не символов, а из цифр и поэтому неоткуда отрезать символы. Тебе нужно брать число по модулю 256 (оператор %), а не обрезать символы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2014, 12:36 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
des1roer, Вы партизан вообще... Какую смысловую нагрузку несут получаемые данные? Что Вы получаете от устройства? Что написано в спецификации протокола? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2014, 13:50 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
Alex Kuznetsovdes1roer, Вы партизан вообще... Какую смысловую нагрузку несут получаемые данные? Что Вы получаете от устройства? Что написано в спецификации протокола?Это секрет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2014, 14:00 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
что я получаю - так это скорость слива воды. но какким обрпразом это поможет. про резку символов - я получаю предположим 3fe а контрольная сумма (идет 7 знаком) fe . то есть нуно резать первый символ и сравнивать. про сингл и халф - в онлайн конверетере получается как если бы я переводил в сингл. да это 32 бит число, а надо 16 бит. но если использовать халф то вообще отстой. нет что ли людей кто раюотал с этой библиотекой? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 08:21 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
des1roerчто я получаю - так это скорость слива воды. но какким обрпразом это поможет. Никак не поможет, поможет вот что: 1. Записать показания на экране прибора на листочек. 2. Опросить прибор по порту и рядом на листочек выписать последовательность байт, которая должна соответствовать числу из п.1. 3. Долго и вдумчиво читать документацию производителя прибора по формату кодирования числа. 4. Долго и вдумчиво читать гугл по формату кодирования числа. 5. Написать метод по переводу последовательности байт в double. 6. Убедиться, что метод выдает число из п.1 по последовательности из п.2. 7. Сделать еще 5 контрольных сравнений на разных числах 8. Если нифига не получилось - звонить в поддержку тем. кто поставляет прибор ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 09:23 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
des1roerнет что ли людей кто раюотал с этой библиотекой? Бегло пробежавшись, кажысь обнаружил метод под твой случай Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 10:22 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
из связки F0-6D-3E по своему tosingle получаю 0,2323608 , что похоже на истину, а вот метод Half actual = Half.ToHalf(b, 0); дает -8192 что явно не правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 10:39 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
des1roerиз связки F0-6D-3E Это 24 бита, откуда лишние 8? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 10:53 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
Код: c# 1. 2.
1.606445 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 11:01 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
des1roerя получаю предположим 3fe а контрольная сумма (идет 7 знаком) fe . то есть нуно резать первый символ и сравнивать. 3FE это два байта - Ox03 и 0xFE зачем что-то резать, если твоя контрольная сумма (FE) уже хранится отдельным байтом? Похоже ты путаешь символ с байтом. Говори правильно, если хочешь чтобы тебя поняли. Нашел твое сообщение с примером пакета 16497831 . Теперь тебе надо поступить как сказал Pallaris. Опиши предназначение каждого байта в своем пакете. №1 №2 №3 №4 №5 №6 №7D0 58 3E 6C 0C 3F 1D??????Контрольная сумма ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 16:04 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
des1roer, в дополнение к тому, что сказал bazile, также нужен алгоритм получения контрольной суммы, т.е. МАТЕМАТИКА того как на основании D0, 58, 3E, 6C, 0C, 3F получить 1D. Также во вложении пример работы с библиотекой Half. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 17:11 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
Alex Kuznetsovв дополнение к тому, что сказал bazile, также нужен алгоритм получения контрольной суммы, т.е. МАТЕМАТИКА того как на основании D0, 58, 3E, 6C, 0C, 3F получить 1D. С этим уже разобрались. Младший байт суммы Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2014, 17:19 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
так объясните мне пожалуйста. а вот халф пресижин - это два байта? просто как сказал мужик с работы, все таки вычисления идут по 4 байтам. просто последний за ноль берем ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2014, 06:02 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
и как я понимаю Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
просто переводит число в десятичную систему счисления ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2014, 06:06 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
des1roerтак объясните мне пожалуйста. а вот халф пресижин - это два байта? Два. О чем я тебе уже несколько раз было сказано. des1roerи как я понимаю ... просто переводит число в десятичную систему счисления Нет. Этот пример показывает что получится если трактовать один байт или два как тип Half. Тебя похоже вводит в заблуждение, что элементы массива инициализируются hex литералами. Их можно заменить на значение в десятичной форме и результат не изменится. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2014, 06:34 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
блин. может мне тогда и не халф пресижин нужен а простое преобразование на 32 бита ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2014, 06:41 |
|
преобразование из hex в ieee 754 half precision
|
|||
---|---|---|---|
#18+
и тогда этот конвертер правильно решает. и тусингл соответственно тоже ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2014, 06:42 |
|
|
start [/forum/topic.php?fid=20&msg=38733891&tid=1402511]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 344ms |
total: | 490ms |
0 / 0 |