Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Безлимитный Bin2Hex Добавлено: 07.07.04 13:02  

Автор вопроса:  @CyRax PTR | Web-сайт: basicproduction.nm.ru/ | ICQ: 204447456 
 Понадобилось тут перевести из 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
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #1
Добавлено: 07.07.04 13:36
 'Использовать так:
 MsgBox Tools_Bin2HexDec("&B11001001100100";), , Tools_Bin2HexDec("&B11001001100100", True)
 
 'Или так:
 ;Dim BinStr As String
 BinStr = "&B" & String$(250, "1";)
 MsgBox Tools_Bin2HexDec(BinStr)

 Если хотите больше 255 символов, то объявите EnumBinBytes не как Byte, а как Integer или Long.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам