Dim i
Dim acode
Dim char
Dim tmp
Dim tmp2
Dim tmp3
Dim tmp4
Encode = Data
For i = Len(Encode ) To 1 Step -1
tmp = Mid(Encode , i, 1)
acode = Asc(tmp)
tmp2 = Left(Encode , i - 1)
tmp3 = Hex(acode)
tmp4 = Mid(Encode , i + 1)
If Len(tmp3) > 1 Then
Encode = tmp2 & "HEX:" & tmp3 & tmp4
Else
Encode = tmp2 & "HEX:0" & tmp3 & tmp4
End If
Next
Оптимизировать обход массива
Здравствуйте.Задача обойти массив (строку) и обработать каждый байт,например равный 255 и на выходе получить HEX:FF.На больших размерах не дождаться окончания.VB не знаю совершенно.
Цитата:
VB не знаю совершенно.
А выше приведенный код откуда.
Как я понимаю, что Вы хотите увидеть файл?
255 или FF это "НИЧЕГО"
Цитата: UserNet2008
А выше приведенный код откуда.
Как я понимаю, что Вы хотите увидеть файл?
255 или FF это "НИЧЕГО"
Как я понимаю, что Вы хотите увидеть файл?
255 или FF это "НИЧЕГО"
Собираю по кускам код.Это для примера 255.Файл побайтно пройти надо.С тем же успехом там может быть любое другое число
Код:
-----------data= 1234567890
отладка по шагам------------------------------------
10 123456789HEX:30
9 12345678HEX:39HEX:30
8 1234567HEX:38HEX:39HEX:30
7 123456HEX:37HEX:38HEX:39HEX:30
6 12345HEX:36HEX:37HEX:38HEX:39HEX:30
5 1234HEX:35HEX:36HEX:37HEX:38HEX:39HEX:30
4 123HEX:34HEX:35HEX:36HEX:37HEX:38HEX:39HEX:30
3 12HEX:33HEX:34HEX:35HEX:36HEX:37HEX:38HEX:39HEX:30
2 1HEX:32HEX:33HEX:34HEX:35HEX:36HEX:37HEX:38HEX:39HEX:30
1 HEX:31HEX:32HEX:33HEX:34HEX:35HEX:36HEX:37HEX:38HEX:39HEX:30
отладка по шагам------------------------------------
10 123456789HEX:30
9 12345678HEX:39HEX:30
8 1234567HEX:38HEX:39HEX:30
7 123456HEX:37HEX:38HEX:39HEX:30
6 12345HEX:36HEX:37HEX:38HEX:39HEX:30
5 1234HEX:35HEX:36HEX:37HEX:38HEX:39HEX:30
4 123HEX:34HEX:35HEX:36HEX:37HEX:38HEX:39HEX:30
3 12HEX:33HEX:34HEX:35HEX:36HEX:37HEX:38HEX:39HEX:30
2 1HEX:32HEX:33HEX:34HEX:35HEX:36HEX:37HEX:38HEX:39HEX:30
1 HEX:31HEX:32HEX:33HEX:34HEX:35HEX:36HEX:37HEX:38HEX:39HEX:30
или HEX: 31 32 33 34 35 36 37 38 39 30
[COLOR="red"]дополнительно[/COLOR]
-данные юникод или анси
Например:
4D 5A 90 00 должны превратиться в Hex:4D Hex:5A Hex:90 Hex:00.Длинна может быть до 100 миллионов,а может и 100 байт)
Так что ли
UserNet2008 Именно так все.По куску кода что я привел дождаться окончания обхода 100кб файла надо постараться,а 3 мб вообще нереально.Может быть как-то внешнюю прогу (написанную на C,например)запустить передав туда массив,но как результат ее работы обратно в скрипт получить(без помощи промежуточных файлов)?
Код:
Sub a110418_1048()
Dim i
Dim acode
Dim char
Dim tmp
Dim tmp2
Dim tmp3
Dim tmp4
Dim xm(0 To 255) As String
i = -1
Do While i < 255
i = i + 1
xm(i) = " HEX:" & Hex(i)
Debug.Print i, xm(i), Chr(i)
Loop
encode = "юя0Й ЦУКЕ НГШЩ ЗХЪЁ ЯЧHJ "
'Data
dt1 = Now
Open "C:\RAB\00.TXT" For Output As #1
For j1 = 1 To 1000000 \ 20
Print #1, ""
Debug.Print j1 \ 100;
For i = 1 To Len(encode)
tmp = Mid(encode, i, 1)
acode = Asc(tmp)
tmp3 = xm(acode)
Print #1, tmp3;
'i, encode
Next i
Next j1
Debug.Print
Debug.Print DateDiff("S", Now, dt1) '''7 сек на 1млн циклов
Close #1
End Sub
HEX:FE HEX:FF HEX:30 HEX:C9 HEX:20 HEX:D6 HEX:D3 HEX:CA HEX:C5 HEX:20 HEX:CD HEX:C3 HEX:D8 HEX:D9 HEX:20 HEX:C7 HEX:D5 HEX:DA HEX:A8 HEX:20 HEX:DF HEX:D7 HEX:48 HEX:4A HEX:20
HEX:FE HEX:FF HEX:30 HEX:C9 HEX:20 HEX:D6 HEX:D3 HEX:CA HEX:C5 HEX:20 HEX:CD HEX:C3 HEX:D8 HEX:D9 HEX:20 HEX:C7 HEX:D5 HEX:DA HEX:A8 HEX:20 HEX:DF HEX:D7 HEX:48 HEX:4A HEX:20
HEX:FE HEX:FF HEX:30 HEX:C9 HEX:20 HEX:D6 HEX:D3 HEX:CA HEX:C5 HEX:20 HEX:CD HEX:C3 HEX:D8 HEX:D9 HEX:20 HEX:C7 HEX:D5 HEX:DA HEX:A8 HEX:20 HEX:DF HEX:D7 HEX:48 HEX:4A HEX:20
Dim i
Dim acode
Dim char
Dim tmp
Dim tmp2
Dim tmp3
Dim tmp4
Dim xm(0 To 255) As String
i = -1
Do While i < 255
i = i + 1
xm(i) = " HEX:" & Hex(i)
Debug.Print i, xm(i), Chr(i)
Loop
encode = "юя0Й ЦУКЕ НГШЩ ЗХЪЁ ЯЧHJ "
'Data
dt1 = Now
Open "C:\RAB\00.TXT" For Output As #1
For j1 = 1 To 1000000 \ 20
Print #1, ""
Debug.Print j1 \ 100;
For i = 1 To Len(encode)
tmp = Mid(encode, i, 1)
acode = Asc(tmp)
tmp3 = xm(acode)
Print #1, tmp3;
'i, encode
Next i
Next j1
Debug.Print
Debug.Print DateDiff("S", Now, dt1) '''7 сек на 1млн циклов
Close #1
End Sub
HEX:FE HEX:FF HEX:30 HEX:C9 HEX:20 HEX:D6 HEX:D3 HEX:CA HEX:C5 HEX:20 HEX:CD HEX:C3 HEX:D8 HEX:D9 HEX:20 HEX:C7 HEX:D5 HEX:DA HEX:A8 HEX:20 HEX:DF HEX:D7 HEX:48 HEX:4A HEX:20
HEX:FE HEX:FF HEX:30 HEX:C9 HEX:20 HEX:D6 HEX:D3 HEX:CA HEX:C5 HEX:20 HEX:CD HEX:C3 HEX:D8 HEX:D9 HEX:20 HEX:C7 HEX:D5 HEX:DA HEX:A8 HEX:20 HEX:DF HEX:D7 HEX:48 HEX:4A HEX:20
HEX:FE HEX:FF HEX:30 HEX:C9 HEX:20 HEX:D6 HEX:D3 HEX:CA HEX:C5 HEX:20 HEX:CD HEX:C3 HEX:D8 HEX:D9 HEX:20 HEX:C7 HEX:D5 HEX:DA HEX:A8 HEX:20 HEX:DF HEX:D7 HEX:48 HEX:4A HEX:20
Цитата:
дождаться окончания обхода 100кб файла надо постараться,а 3 мб вообще нереально.
А где вы выводите в TextBox или RichTextBox, то попробуйте в RichTextBox загрузить 3-5мб то придеться подождать одну две минуты и это что VB, что в C++. Дело в том что TextBox или RichTextBox созданы для таких программ как "Привет мир". Нужно искать коммерческие продукты.
По вашему коду добавьте:
................
End If
[COLOR="blue"]DoEvents[/COLOR]
Next
Спасибо.Проверю.
Выводить ни в какие текстовые поля ничего не надо.