Всем доброго времени суток. Буду очень признателен за помощь. Разрабатываю программу связи с ВКТ -7. Счетчик отвечает. Передает свойства, единицы измерения, количество знаков и размер данных, но вот при получении данных возникла проблема.
С 2-х байтными данными разобрался (little endian) ,а вот с 4-х байтными (например G при текущих изменениях) не могу понять как.
В vktEasy получается:
приходит: 3B A8 83 3F
vktEasy интерпретируют как значение 1.02857
в свойствах, пришедших после запроса, про кол-во знаков G ничего не значится (в документации от 0-9999999 без каких либо точек)
Как я не крутил эти байты, ничего похожего на полученное ими число я не получил.
Если кто сталкивался, подскажите, пожалуйста.
Разверните байты
3F 83 A8 3B = 1,028 это тип float
А
тут готовое решение
Спасибо за ответ и совет.
Tigr, eще раз большое спасибо!!! Действительно все получилось!!
String myString = "3F83A83B";
float f = Float.intBitsToFloat(Integer.valueOf(myString,16).intValue());
Есть еще вопрос по недокументированным запросам
3F F7 00 02
и
3F F8 00 80
В тех поддержке мне не захотели раскрывать эту тайну. Но программа vktEasy очень активно пользуется этой связкой команд на этапе инициализации связи
Может быть кто то знает что это за команды
Снова нужна помощь..
приходит строка FD FF FF FF
должно как то получиться -0.03
Подскажите, пожалуйста как выкрутиться. Предыдущее решение дает ошибку
знаковое четырехбайтовое целое в обратном порядке (например integer в Паскале) деленое на 100
Большое спасибо за ответ. Очень помогло. Бьюсь с реализацией.
String str = "FFFFFFFD";
int num = Integer.parseInt(str, 16);
System.out.println("num="+num);
дает ошибку, но в то же время
(Integer.valueOf((0xFFFFFFFD)).intValue())
дает заветное -3
Разобрался.
Чтобы правильно работать со строкой и получать значение нужно использовать
Integer.parseUnsignedInt("fffffffd", 16)
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.