Уважаемые форумчане,
помогите, пожалуйста, со следующим вопросом.
Как можно сравнить hex строки между собой? Есть полученное значение, и есть два значения-лимиты. Как можно сравнить, находится ли значение в данных лимитах?
Загвоздка в конвертации строки в число. Если шестнадцатиричные строки одинаковой длинны, сравнивать получается. Если разной - сравнение неправильное.
Например, так:
Нижний лимит: 1194h (4500d)
Верхний лимит: 15Е0h (5600d)
Число сравнения: 12C0h (4800d)
Сравнение работает правильно.
Но вот так:
Нижний лимит: 96h (150d)
Верхний лимит: 15Е0h (5600d)
Число сравнения: 12C0h (4800d)
сравнение не работает. Но если нижний лимит записать как 0096h, то сравнение работает.
Как поступать в данном случае?
Конвертировать строку в число правильно не всегда получается, т.к. используя различные типы чисел (U8, U16, U32, U64), как это показано здесь - http://forums.ni.com/t5/LabVIEW/Convert ... -p/1498168 -можно получить различный результат, в зависимости от типа числа, в который переводится шестнадцатиричная строка...
Думаю, что все здесь просто, но решение найти не получается...
Заранее спасибо!
Сравнение hex строк
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Сравнение hex строк
- Вложения
-
- hex comparison.png (13.89 КБ) 4644 просмотра
Мы делили апельсин - много наших полегло...
-
IvanLis
- guru
- Сообщения: 5462
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 86 раз
Re: Сравнение hex строк
По идее Вам сравнивать нужно не строку, а что она несет, т.е. информацию закодированную ею.Kosist писал(а):Конвертировать строку в число правильно не всегда получается, т.к. используя различные типы чисел (U8, U16, U32, U64)
А значит Вы должны однозначно знать, что за тип данных нужно получить на выходе, и соответственно в него и конвертировать.
Если же Вас устраивает такой вариант, то можно просто добивать строку нулями до максимальной из трех длины.Kosist писал(а):Нижний лимит: 96h (150d)
Верхний лимит: 15Е0h (5600d)
Число сравнения: 12C0h (4800d)
сравнение не работает. Но если нижний лимит записать как 0096h, то сравнение работает.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Сравнение hex строк
Спасибо за подсказку! Но, наверное, как Вы и сказали, лучше сравнивать информацию - число - которую несет эта hex строка... Буду пробовать )
Мы делили апельсин - много наших полегло...
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Сравнение hex строк
В продолжение поста.
Все оказалось намного проще.
Я игрался с функцией Type Cast; а нужно было из обычной Hex String to Number... Она конвертирует все правильно Только на вход нужно подавать строку в нормально виде, но текст должен отображать hex-значение...
Все оказалось намного проще.
Я игрался с функцией Type Cast; а нужно было из обычной Hex String to Number... Она конвертирует все правильно Только на вход нужно подавать строку в нормально виде, но текст должен отображать hex-значение...
- Вложения
-
- Conversion.png (16.5 КБ) 4567 просмотров
Мы делили апельсин - много наших полегло...