Есть ли функция преобразования строки в двоичные данные ?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Есть ли функция преобразования строки в двоичные данные ?

Сообщение ALX_2002 » 13.01.2005 (Чт) 20:07

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

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 13.01.2005 (Чт) 21:15

Код генерит рандомную строку из 1000 символов, затем запихивает ее в Text1 и байты в Text2.
Код: Выделить всё
Option Explicit

Private Sub Form_Load()
Dim S$, Arr() As Byte, I&, T!, S2$
For I = 0 To 1000
S = S & Chr(32 + Rnd * (223))
Next
T = Timer
For I = 0 To 1000
ReDim Preserve Arr(I) As Byte
Arr(I) = Asc(Mid(S, I + 1, 1))
S2 = S2 & Hex(Arr(I))
Next
MsgBox "Время (в с): " & Timer - T
Text1.Text = "Строка: " & S
Text2.Text = "Байты: " & S2
End Sub
Пойдёт? :roll:

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

Сообщение ALX_2002 » 13.01.2005 (Чт) 21:36

Хм..... если 1 мег перелапачивать, то всё таки тормозит :(

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 13.01.2005 (Чт) 22:13

Ты же сказал 1000 символов :)

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 14.01.2005 (Пт) 8:50

Try this:
Код: Выделить всё
Dim Bytes() as Byte
Dim StrMyString As String, StrMyNewString As String

While Len(StrMyString) < 1000
    StrMyString = StrMyString & "How do you do?"
Wend
Bytes() = StrMyString

StrMyNewString = Bytes()


По результатам отладочной печати у меня занимает < 1 cек. А тут, заметь, есть преобразование и туда, и обратно.
Правда, комп - мощный.
Есть ли у меня вопрос? У меня всегда есть вопрос

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

Сообщение ALX_2002 » 14.01.2005 (Пт) 11:06

Хм.... А это идея....Вроде пашет даже....

Пойду в тот пост - спрошу как указать с какого места в масив читать.

А ваще пасиба !!! :)

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

Сообщение tyomitch » 14.01.2005 (Пт) 14:10

Eugenio писал(а):По результатам отладочной печати у меня занимает < 1 cек. А тут, заметь, есть преобразование и туда, и обратно.
Правда, комп - мощный.

Имхо скорость можно увеличить ещё на порядок, выделяя всю строку заранее и потом насовывая туда данные оператором Mid.
Конкатенация - медленная операция, из-за того, что она создаёт новую строку и освобождает старую.
Изображение


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 150

    TopList