



У меня такой вопрос:
существует какой нибудь алгаритм по переводу обычного текста в шестнадцатиричный


'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
Amed писал(а):Эх, вы, а ещё профессор...
MsgBox Hex(YourNumber)
Ещё есть Oct(YourNumber) - это в восьмиричную систему...
Vitaly1 писал(а):Amed писал(а):Эх, вы, а ещё профессор...
MsgBox Hex(YourNumber)
Ещё есть Oct(YourNumber) - это в восьмиричную систему...
Ничего, Amed, самую малость в моем алгоритме заменить, и можно задавать порядок системы, в какую переводишь, и тогда, хошь в двоичную, хошь в 16 чичную, хошь в троичную, хошь в пятиричную(хоть смеюсь, но все равно можно)
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
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
Amed писал(а):А зачем тебе 152-я система счисления?![]()
И как в ней будет выглядеть число, скажем, 153? =))))
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12