Страница: 1 |
Вопрос: Безлимитный Bin2Hex | Добавлено: 07.07.04 13:02 |
Автор вопроса: ![]() |
Понадобилось тут перевести из BIN в DEC, но в VB не нашёл подходящей функции.
Эта ф-я переводит неограниченное BIN в HEX (тоже неограниченное) или DEC (ограниченное длиной Long). Использует мою старую функцию ToDEC из конвертера систем счислений. Если кто захочет модернизировать - не стесняйтесь. Function Tools_Bin2HexDec(ByVal Value As String, Optional ByVal ToDec As Boolean) As String On Error GoTo Ntb Value = UCase$(Trim$(Value)) If Left$(Value, 2) = "&B" Then Value = LTrim$(Right$(Value, Len(Value) - 2)) Else Tools_Bin2HexDec = "": Exit Function End If If Len(Value) < 4 Then Value = String$(4 - Len(Value), "0") & Value Dim CorrectLen As Integer CorrectLen = Len(Value) Mod 4 If CorrectLen > 0 Then Value = String$(4 - CorrectLen, "0") & Value Dim RetHex As String, RetHexByte As String, EnumBinBytes As Byte For EnumBinBytes = 1 To Len(Value) Step 4 RetHexByte = Hex$(TOOLS_ToDEC_Byte(2, Mid$(Value, EnumBinBytes, 4))) 'If Len(RetHexByte) < 2 Then RetHexByte = "0" & RetHexByte RetHex = RetHex & RetHexByte Next EnumBinBytes If ToDec Then Tools_Bin2HexDec = LTrim$(Str$(Val("&H" & RetHex))) Else Tools_Bin2HexDec = "&H" & RetHex End If Exit Function Ntb: MsgBox "Number too big: " & Value, , Error$(Err) Tools_Bin2HexDec = "" Exit Function End Function Function TOOLS_ToDEC_Byte(NumSystem As Integer, Number$) As Byte ' Convert from any number system to decimal Number$ = UCase$(Number$) Dim DecNum As Long DecNum = 0 Dim Convert As Integer For Convert = 1 To Len(Number$) Dim SysNum$ SysNum$ = Mid$(Number$, Convert, 1) If Asc(SysNum$) > 64 Then SysNum$ = LTrim$(Str$((Asc(SysNum$) - 65) + 10)) DecNum = DecNum + Val(SysNum$) If Convert = Len(Number$) Then Exit For DecNum = DecNum * NumSystem Next Convert TOOLS_ToDEC_Byte = DecNum End Function |
Ответы | Всего ответов: 1 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 204447456 Вопросов: 28 Ответов: 664 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 07.07.04 13:36 |
'Использовать так:
MsgBox Tools_Bin2HexDec("&B11001001100100" ![]() 'Или так: ![]() BinStr = "&B" & String$(250, "1" ![]() MsgBox Tools_Bin2HexDec(BinStr) Если хотите больше 255 символов, то объявите EnumBinBytes не как Byte, а как Integer или Long. |
Страница: 1 |
|