Шестнадцатиричный код

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

Шестнадцатиричный код

Сообщение _Мика_ » 01.11.2003 (Сб) 17:56

Всем привет :D :!: :!: :!:
У меня такой вопрос:
существует какой нибудь алгаритм по переводу обычного текста в шестнадцатиричный :?: естественно на VB :?:
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 01.11.2003 (Сб) 18:34

Не понял???? Что значит текст обычный в шестнадцатеричный??? Ты имеешь ввиду отображение кода символов - так это делается так - символ кода, его в Hex и все ... Не понятно в общем, чего хочешь.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 01.11.2003 (Сб) 18:36

n = десятичное число

s =""

while n>=16
'получаем остаток
n1 = n mod 16
n= n \ 16
select case n1
case 0: s="0"+s
.
.
.
case 10: s="A"+s
case 11: s="B"+s
case 12: s="C"+s
case 13: s="D"+s
case 14: s="E"+s
case 15: s="F"+s
end select
wend

select case n
case 0: s="0"+s
.
.
.
case 10: s="A"+s
case 11: s="B"+s
case 12: s="C"+s
case 13: s="D"+s
case 14: s="E"+s
case 15: s="F"+s
end select


Ну, примерно так

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 01.11.2003 (Сб) 19:38

Эх, вы, а ещё профессор...

MsgBox Hex(YourNumber)

Ещё есть Oct(YourNumber) - это в восьмиричную систему...

:lol: :lol: :lol:

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 02.11.2003 (Вс) 10:15

Спасибо всем :)
А особенно Amed:D :!:
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

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

Сообщение alibek » 02.11.2003 (Вс) 17:47

Ну если тебя не устравивает Hex$, то можно и поизвращаться :)
Код: Выделить всё
'Universal translator
Private Const Bases As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Public Function Convert(ByVal Value As String, Optional ByVal FromBase As Integer = 10, Optional ByVal ToBase As Integer = 10, Optional ByVal MinPadSize As Integer = 0) As String
Dim V As Long, ret As String
If FromBase < 2 Or FromBase > 36 Then Exit Function
If ToBase < 2 Or ToBase > 36 Then Exit Function
If Len(Value) = 0 Then Exit Function
If InStr(Value, ".") > 0 Then Exit Function
V = ToUnary(UCase$(Value), FromBase)
ret = FromUnary(V, ToBase)
If Len(ret) < MinPadSize Then ret = String$(MinPadSize - Len(ret), Mid$(Bases, 1, 1)) & ret
Convert = ret
End Function

Private Function ToUnary(ByVal Value As String, Optional ByVal Base As Integer = 10) As Long
Dim ret As Long, I As Integer, C As Integer, P As Integer
For C = Len(Value) To 1 Step -1
  I = Len(Value) - C
  P = InStr(Bases, Mid$(Value, C, 1) - 1
  If P >= 0 Then ret = ret + P * Base^I
Next C
ToUnary = ret
End Function

Private Function FromUnary(ByVal Value As Long, Optional ByVal Base As Integer = 10) As String
Dim ret As String, I As Integer, P As Integer, V As Long
P = Fix(Log(Value) / Log(Base))
Do Until P < 0
  V = Base ^ P
  I = Fix(Value / V)
  Value = Value - I * V
  ret = ret & Mid$(Bases, I + 1, 1)
  P = P - 1
Loop
FromUnary = ret
End Function

Вроде бы ошибок нет, но я не проверял :)
Lasciate ogni speranza, voi ch'entrate.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 04.11.2003 (Вт) 17:11

Amed писал(а):Эх, вы, а ещё профессор...

MsgBox Hex(YourNumber)

Ещё есть Oct(YourNumber) - это в восьмиричную систему...


Ничего, Amed, самую малость в моем алгоритме заменить, и можно задавать порядок системы, в какую переводишь, и тогда, хошь в двоичную, хошь в 16 чичную, хошь в троичную, хошь в пятиричную :lol: (хоть смеюсь, но все равно можно)

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 05.11.2003 (Ср) 22:49

Да, это плюс...
Но зачем же из кожи вон лезть, когда есть три замечательные буквы - H.E.X. :lol:
Для многих задач этого имхо вполне хватитъ...

sanches
El compa&#241;ero
El compa&#241;ero
 
Сообщения: 823
Зарегистрирован: 09.01.2003 (Чт) 3:58
Откуда: Р_О_С_С_И_Я ! (Питер)

Сообщение sanches » 06.11.2003 (Чт) 20:55

Vitaly1 писал(а):
Amed писал(а):Эх, вы, а ещё профессор...

MsgBox Hex(YourNumber)

Ещё есть Oct(YourNumber) - это в восьмиричную систему...


Ничего, Amed, самую малость в моем алгоритме заменить, и можно задавать порядок системы, в какую переводишь, и тогда, хошь в двоичную, хошь в 16 чичную, хошь в троичную, хошь в пятиричную :lol: (хоть смеюсь, но все равно можно)


Это словно из пушки по воробьям :lol:
Изображение

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 07.11.2003 (Пт) 2:48

Ну а тут просто вместо KodLine пишешь строку символов системы в которую кодировать надо ... ето если у тебя есть желание чего-нить замудрить этакое ... например 152-ю СС :)

Код: Выделить всё
Function Convert(A) as String
KodLine1="01"     ' двоичная
KodLine2="01234567"  ' восьмиричная
' ...
KodLineN="0123456789ABCDEF" ' шестнадцатиричная
KodLine=KodLine1
Answer=""
WHILE int(A/len(KodLine))<>0
  F = A mod len(KodLine)+1
  Answer=Mid(KodLine,F ,1)+Answer
  A=int(A/len(KodLine))
WEND
F = A mod len(KodLine)+1
Answer=Mid(KodLine,F,1)+Answer
Convert = Answer
End Function


Просто вызывай функцию:))
даже в VBS работает :)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 07.11.2003 (Пт) 2:49

Ну а тут просто вместо KodLine пишешь строку символов системы в которую кодировать надо ... ето если у тебя есть желание чего-нить замудрить этакое ... например 152-ю СС :)

Код: Выделить всё
Function Convert(A) as String
KodLine1="01"     ' двоичная
KodLine2="01234567"  ' восьмиричная
' ...
KodLineN="0123456789ABCDEF" ' шестнадцатиричная
KodLine=KodLine1
Answer=""
WHILE int(A/len(KodLine))<>0
  F = A mod len(KodLine)+1
  Answer=Mid(KodLine,F ,1)+Answer
  A=int(A/len(KodLine))
WEND
F = A mod len(KodLine)+1
Answer=Mid(KodLine,F,1)+Answer
Convert = Answer
End Function


Просто вызывай функцию:))
даже в VBS работает :)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 07.11.2003 (Пт) 9:38

А зачем тебе 152-я система счисления? :o

И как в ней будет выглядеть число, скажем, 153? =))))

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 08.11.2003 (Сб) 1:37

Amed писал(а):А зачем тебе 152-я система счисления? :o

И как в ней будет выглядеть число, скажем, 153? =))))


Ну это просто .... например для кодирования ... сначала формируй КОДЛАЙН как хочешь, но так чтобы там было 152 уникальных символа :)

Простая кодирущяя система - 10 символов, например, "8620937514" и теперь число 17 будет выглядеть не "17" а так - "65":)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 09.11.2003 (Вс) 14:29

Есть множества путей в достижении цели. :D Естественно использовать готовое проще.
Есть такая еще фраза, придуманая мной:Ты не один во вселенной.
К сожалению, мы часто решаем проблемы с позиции: я один во вселенной.
Хотя, не всегда, легко найти то, что уже имеется. 8) А иногда сам можешь быстро что то сделать, не подумав о том, что это уже есть. :lol:
Если меня поняли, что я сказал, хорошо, а иначе :P

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 10.11.2003 (Пн) 0:30

Ну без лишней скромности заявлю - ВСЕ ПРОГРАММИСТЫ - БОГИ, (почти все), точнее те, кто реально что-то создает ... ну а остальные... :)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


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

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

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

    TopList  
cron