Быстрый HEX

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Быстрый HEX

Сообщение |kerish| » 04.09.2005 (Вс) 13:08

Необходимо содержимое EXE файла перевести в HEX-значение.
Файл весит 1 Мб. Перевод в HEX занимает ооооочень долгое время.
А переводить надо быстро.
Может кто знает, как переводить в HEX большие объемы текста быстро?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.09.2005 (Вс) 14:37

Выделять сразу строку нужного размера и править Mid-ом - быстрее, чем 1000000 конкатенаций.
Изображение

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 05.09.2005 (Пн) 11:35

tyomitch В смысле строку? Идёт бинарный поток текста... Можно, пожалуйста, по-конкретнее?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 05.09.2005 (Пн) 11:54

В смысле, не HexDump = HexDump & Left$(Hex$(Byte) & "0", 2), а Mid$(HexDump, Pos, 2) = Hex$(Byte)
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.09.2005 (Пн) 15:56

|kerish| писал(а):tyomitch В смысле строку? Идёт бинарный поток текста... Можно, пожалуйста, по-конкретнее?

Ещё один видит несуществующую разницу между строкой и "бинарным потоком текста"? :-/
Код свой лучше покажи, телепатов нет. Тогда и будет "по-конкретнее".
Изображение

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 05.09.2005 (Пн) 16:01

Название топика меня улыбнуло просто абсолютно :)

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 05.09.2005 (Пн) 16:18

2 RayShade: Аналогично... Я аж задумался... Это типа угроза такая наверное - "БЫСТРЫЙ ! ! Так что не_х... тут."

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 06.09.2005 (Вт) 18:58

Вот код.

Код: Выделить всё
Private Function HexToStr(ByVal Data As String) As String
Dim Buffer As String
If Len(Data) Mod 2 <> 0 Then
HexToStr = vbNullString
Else
For i = 1 To Len(Data) Step 2
Buffer = Buffer & Chr("&H" & Mid(Data, i, 2))
Next i
HexToStr = Buffer
End If
End Function

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.09.2005 (Вт) 19:14

Вот быстрый код.
Код: Выделить всё
Private Function HexToStr(ByVal Data As String) As String
Dim i As Long
If Len(Data) Mod 2 Then
HexToStr = vbNullString
Else
HexToStr = Space(Len(Data) \ 2)
For i = 1 To Len(Data) Step 2
Mid(HexToStr, i \ 2 + 1, 1) = Chr("&H" & Mid(Data, i, 2))
Next i
End If
End Function

Найди 10 отличий.
Изображение

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.09.2005 (Ср) 10:24

tyomitch писал(а):Вот быстрый код.


Главный вопрос - а нахера этот маразм нужен-то - кто задумывался???

Зачем весь файл переводить в HEX-представление?

Для того чтобы отобразить это дело в редакторе? Дык для этого совсем не обязательно заниматься подобными извращениями, IMHO.

Как бы делал я тот-же редактор - взял бы Grid и выводил/редактировал бы байтовый массив через него... В принципе интересно - может даже примерчик набросаю ;)
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.09.2005 (Ср) 11:12

Я, например, это делал, когда надо было перевести бинарный код в вид, в котором отсутствуют управляющие коды и коды, выше 128. Можно было конечно переводить в BASE64, но класса и/или описания не было, а Hex-Dump это всегда просто и наглядно.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.09.2005 (Ср) 11:47

Вот, кстати, быстренько набросал примерчик простейшего HEX-редактора на Grid-е. Использовался Janus GridEx...
Вложения
H.RAR
(16.2 Кб) Скачиваний: 21
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 07.09.2005 (Ср) 12:38

Я делаю не HEX-редактор.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.09.2005 (Ср) 12:43

|kerish| писал(а):Я делаю не HEX-редактор.


Да мне все одно интересно было - идея-то давно понятна была, а реализовать только cейчас попробовал - может кому и пригодится...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 07.09.2005 (Ср) 12:54

Посмотри сюда, плиз http://bbs.vbstreets.ru/viewtopic.php?t=19111

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 07.09.2005 (Ср) 13:35

Andrey Fedorov я уже выкладывал пример hex редактора http://bbs.vbstreets.ru/viewtopic.php?t=9610
Программисты не глючат - глючат компиляторы...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.09.2005 (Ср) 14:35

CodeName33 писал(а):Andrey Fedorov я уже выкладывал пример hex редактора http://bbs.vbstreets.ru/viewtopic.php?t=9610


У меня абсолютно другой принцип.
На мой взгляд моя реализация намного проще...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 07.09.2005 (Ср) 16:25

Andrey Fedorov писал(а):
tyomitch писал(а):Вот быстрый код.


Главный вопрос - а нахера этот маразм нужен-то - кто задумывался???

"Кто хочет делать - делает, кто не хочет - ищет повод не делать" (с)
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 28

    TopList