Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для Anderis49
-42 / 41 / 6
Регистрация: 07.08.2013
Сообщений: 1,112
Записей в блоге: 1

HEX и текст - как отличить

20.08.2014, 18:14. Показов 2149. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток!

Замучился с, возможно для знатоков, простым вопросом.

Одна переменная содержит HEX-код в виде
VB.NET
1
69 6E 20 6D 73 34 39
а другая - текст.

Тип обоих переменных "String".

Как отличить мух от котлет , HEX-код от текста?

Спасибо за помощь
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.08.2014, 18:14
Ответы с готовыми решениями:

Как перевести текст из ASCII в HEX и обратно ?
Как перевести текст из ACII в HEX и обратно ?

Как отличить проект на C# от проекта на C++???
всё не актуально, тему можно удалить

Как отличить программное нажатие клавиатуры от реального?
Вопрос в том, как отличить вводит ли пользователь данные удаленно, либо с реальной клавиатуры и мыши. Требуется запретить работать в...

9
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
20.08.2014, 21:10
HEX символ может быть от 00 до FF, если вся последовательность удовлетворяет этому условию и является четной по длине, то можно утверждать что это HEX последовательность, но и то что это просто строка отвергать нельзя, например 0102030405 - и текст и HEX последовательность. Однозначно определить сможет человек который работает с данными.
0
 Аватар для Hemicide
121 / 114 / 62
Регистрация: 27.07.2014
Сообщений: 225
20.08.2014, 21:14
Anderis49, ерунда какая-то. У тебя в обоих случаях данные типа String в формате ## ## ## ## ## ## ##. Какую хочешь, такую и переводи в HEX. Если ты сам генерируешь эти данные, то для HEX в String пиши с разделителями ##-##-##-##-##-##-##, или наоборот.
0
 Аватар для Anderis49
-42 / 41 / 6
Регистрация: 07.08.2013
Сообщений: 1,112
Записей в блоге: 1
20.08.2014, 21:58  [ТС]
Ну чего вы в самом деле.....

Вот код
VB.NET
1
2
3
4
5
6
7
8
Public Class Form1
 
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        For i = 1 To Len(TextBox1.Text)
            TextBox2.Text = TextBox2.Text & Convert.ToString(Convert.ToInt32(Asc(Mid(TextBox1.Text, i, 1))), 16) & " " & vbCrLf
        Next
    End Sub
End Class
В TextBox1.Text впечатываем "Miki" , а в TextBox2.Text получаем "4d 69 6b 69"

И что тут одинакового? Как программно узнать, что в TextBox1.Text лежит "Miki", а в TextBox2.Text - "4d 69 6b 69" ?
0
 Аватар для Hemicide
121 / 114 / 62
Регистрация: 27.07.2014
Сообщений: 225
20.08.2014, 23:02
Anderis49, используй регулярные выражения для определения, подходит ли "4d 69 6b 69" под формат HEX

Добавлено через 56 минут
В регулярках я сам не шибко силен, но вот:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
   Sub Main()
 
        Dim str As String = BitConverter.ToString(Text.Encoding.Default.GetBytes(TextBox1.Text)
        Dim b As Boolean = IsHex(Str)
 
    End Sub
 
    Private Function IsHex(ByVal patten As String) As Boolean
        Dim regex As New Text.RegularExpressions.Regex("^#?(([a-f0-9]){2}(-?|:?| ?))+$", Text.RegularExpressions.RegexOptions.IgnoreCase)
        Return regex.IsMatch(patten)
    End Function
Функция поддерживает проверки шестнадцатеричных строк нескольких форматов:
"4d-69-6b-69"
"4d 69 6b 69"
"4d:69:6b:69"

ещё "4d:69 6b-69", #4d696b69

В рег. выражении указано [a-f0-9] без A-F, потому что, установлен флаг RegexOptions.IgnoreCase
1
 Аватар для Anderis49
-42 / 41 / 6
Регистрация: 07.08.2013
Сообщений: 1,112
Записей в блоге: 1
20.08.2014, 23:27  [ТС]
Hemicide, Ты по памяти пишешь не проверяя в VB?

1. Нет кавычки после
VB.NET
1
GetBytes(TextBox1.Text)
2. "Encoding" не является членом "String" в строке
VB.NET
1
BitConverter.ToString(Text.Encoding.Default.GetBytes(TextBox1.Text))
3."Text", импортированный из пространств имен или типов "System, System.Drawing", является неоднозначным в строке

VB.NET
1
 Dim regex As New Text.RegularExpressions.Regex
Я понимаю тебя, когда ты написал
В регулярках я сам не шибко силен
Но проверять в редакторе то, что советуешь .....
0
 Аватар для Hemicide
121 / 114 / 62
Регистрация: 27.07.2014
Сообщений: 225
20.08.2014, 23:40
Anderis49, пожалуйста...
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
21.08.2014, 00:59
Возможно стоит попробовать преобразовать в число?
VB.NET
1
2
3
4
5
6
7
8
Function IsHexString(ByVal str As String) As Boolean
    Try
        Dim num As Long = Long.Parse(str, Globalization.NumberStyles.HexNumber)
        Return True
    Catch ex As Exception
        Return False
    End Try
End Function
0
 Аватар для Hemicide
121 / 114 / 62
Регистрация: 27.07.2014
Сообщений: 225
21.08.2014, 01:28
ViterAlex, может лучше использовать Long.TryParse, чтобы исключения не ловить?

VB.NET
1
2
3
Function IsHexString(ByVal str As String) As Boolean
    Return Long.TryParse(str, Globalization.NumberStyles.HexNumber)
End Function
Тогда все форматы отпадают, кроме одного

Добавлено через 15 минут
Вообще-то вариантов проверить, оказалось очень много.
VB.NET
1
2
3
4
    Function IsHexString(ByVal str As String) As Boolean
        Dim out As Long
        Return Long.TryParse(str, Globalization.NumberStyles.HexNumber, Nothing, out)
    End Function
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
    Function IsHexString2(ByVal str As String) As Boolean
        Return str.All(Function(c) IsHex(c))
    End Function
 
 
    Public Function IsHex(ByVal c As Char) As Boolean
        c = Char.ToLower(c)
        If (Char.IsDigit(c) OrElse (c >= "a" AndAlso c <= "f")) Then
            Return True
        Else
            Return False
        End If
    End Function
0
 Аватар для Anderis49
-42 / 41 / 6
Регистрация: 07.08.2013
Сообщений: 1,112
Записей в блоге: 1
21.08.2014, 12:37  [ТС]
Не знаю, ребята, на каком редакторе вы пишите, но у меня на VB 2010 экран красным светиться от ошибок.
Например:
VB.NET
1
2
3
4
  Function IsHexString(ByVal str As String) As Boolean
        Dim out As Long
        Return Long.TryParse(str, Globalization.NumberStyles.HexNumber, Nothing, out)
    End Function
возвращает "False".....чего "False" ????

Давайте закрывать тему.

Я сделал проще.... слова "Пирожное" и его аналог в HEX - "cf-e8-f0-ee-e6-ed-ee-e5" имеют только одно отличие - наличие "-".
Вот на этом я и построил отделение "котлет от мух"

Всем СПАСИБО за советы и помощь.
Приятного времяпровождения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.08.2014, 12:37
Помогаю со студенческими работами здесь

как отличить форматированный текст от неформатированного
здравствуйте, подскажите как отличить форматированный текст от не форматированного текста. Форматирую текст в DBRIChedit, вывожу в...

Как отличить русский текст от английского?
Проблемма такая при в ходе в чат надо сделать вод ник Только русскими буквами или Eng А то поделивают ники - заменяют буквы в нике ...

Как отличить шифрованный текст от нешифрованного?
Есть много файлов. Все они содержат китайский текст (+цифры, символы), но некоторые из них шифрованные. Как распознать шифрованный файл от...

Как отличить текст кириллицей от текста латиницей
У меня есть 2 цикла, 1 цикл выполняет проверку слов в тексте через переменную char1 в которой записан русский алфавит и 2 цикл с проверкой...

Как перевести *.hex в текст?
:020000040000FA :020000000528D1 :080008000900031383128501B6 :100010000130831685008312860100308316860026 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru