从Hexa转换为Binary Excel VBA的代码很多 [英] Code to convert from Hexa to Binary Excel VBA a large number

查看:62
本文介绍了从Hexa转换为Binary Excel VBA的代码很多的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将6E29210100(六)转换为二进制.使用较小的十六进制数,代码可以正常工作.我不知道为什么.我希望它至少可以处理10个字符.

  Dim HexNum作为字符串Dim BinNum作为字符串尽可能长的Dim lHexNum昏暗的整数公开子Teste()HexNum ="6E29210100"HexToBin(十六进制)MsgBox"Bin:"&十六进制BinNum = vbNullString结束子公共函数HexToBin(可选的HexNum作为字符串)作为字符串在错误转到To ErrorHandler我= 0lHexNum = Val(& h"& HexNum)做如果lHexNum和2 ^ i然后BinNum ="1"&BinNum别的BinNum ="0"&BinNum万一我=我+ 1循环直到2 ^ i>十六进制数HexToBin = BinNumErrorHandler:结束功能 

代码返回:00101001001000010000000100000000

正确答案:0110111000101001001000010000000100000000

解决方案

I'm trying to convert 6E29210100 (hexa) to binary. With smaller hexa numbers, the code works fine. and I don't know why. I would like it was working to 10 characters at least.

Dim HexNum As String
Dim BinNum As String
Dim lHexNum As Long
Dim i As Integer

Public Sub Teste()

    HexNum = "6E29210100"

    HexToBin (HexNum)

    MsgBox "Bin: " & HexToBin
    BinNum = vbNullString

End Sub

Public Function HexToBin(Optional HexNum As String) As String

   On Error GoTo ErrorHandler

   i = 0

   lHexNum = Val("&h" & HexNum)

   Do
      If lHexNum And 2 ^ i Then
         BinNum = "1" & BinNum
      Else
         BinNum = "0" & BinNum
      End If
      i = i + 1
   Loop Until 2 ^ i > lHexNum

   HexToBin = BinNum

ErrorHandler:

End Function

Code returns: 00101001001000010000000100000000

Right answer: ‭0110111000101001001000010000000100000000‬

解决方案

Function from HERE

Included only to help with the call of the function which OP had issues.

Public Sub Test()

    Dim HexNum As String
    HexNum = "6E29210100"

    Dim BinNum As String
    BinNum = HEXtoBIN(HexNum)

    MsgBox BinNum

End Sub

Public Function HEXtoBIN(ByVal strHex As String) As String
    Dim c As Long, i As Long, b As String * 4, j As Long
    For c = 1 To Len(strHex)
        b = "0000"
        j = 0
        i = Val("&H" & Mid$(strHex, c, 1))
        While i > 0
            Mid$(b, 4 - j, 1) = i Mod 2
            i = i \ 2
            j = j + 1
        Wend
        HEXtoBIN = HEXtoBIN & b
    Next
    HEXtoBIN = RTrim$(HEXtoBIN)
End Function

这篇关于从Hexa转换为Binary Excel VBA的代码很多的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆