Board logo

標題: [分享] 用 vba 寫 16 進制到 2 進制 function [打印本頁]

作者: ivanyung    時間: 2010-8-5 14:12     標題: 用 vba 寫 16 進制到 2 進制 function

這裡的 Chexdec 和 cdechex 基本上是用了內置功能
寫得不好, 勿見笑.

說明:
Chexdec 16 轉 10
Cdechex 10 轉 16
chexbin 16 轉 2
cbinhex 2 轉 16
至於cbinh 是 cbinhex 的專用 function

CbinH 是內部使用 function
  1. Function CHexDec(myh)
  2.     CHexDec = CSng("&H" & myh)
  3. End Function

  4. Function CDecHex(myh)
  5.     CDecHex = hex(myh)
  6. End Function

  7. Function CHexBin(myStr)
  8.     Dim tmpPos As String
  9.     Dim tmpStr As String
  10.     Dim i As Integer
  11.    
  12.     myStr = UCase(myStr)
  13.     For i = 1 To Len(myStr)
  14.         tmpPos = Mid(myStr, i, 1)
  15.         
  16.         Select Case tmpPos
  17.             Case 0
  18.             tmpStr = tmpStr & "0000"
  19.             Case 1
  20.             tmpStr = tmpStr & "0001"
  21.             Case 2
  22.             tmpStr = tmpStr & "0010"
  23.             Case 3
  24.             tmpStr = tmpStr & "0011"
  25.             Case 4
  26.             tmpStr = tmpStr & "0100"
  27.             Case 5
  28.             tmpStr = tmpStr & "0101"
  29.             Case 6
  30.             tmpStr = tmpStr & "0110"
  31.             Case 7
  32.             tmpStr = tmpStr & "0111"
  33.             Case 8
  34.             tmpStr = tmpStr & "1000"
  35.             Case 9
  36.             tmpStr = tmpStr & "1001"
  37.             Case "A"
  38.             tmpStr = tmpStr & "1010"
  39.             Case "B"
  40.             tmpStr = tmpStr & "1011"
  41.             Case "C"
  42.             tmpStr = tmpStr & "1100"
  43.             Case "D"
  44.             tmpStr = tmpStr & "1101"
  45.             Case "E"
  46.             tmpStr = tmpStr & "1110"
  47.             Case "F"
  48.             tmpStr = tmpStr & "1111"
  49.         End Select
  50.     Next
  51.    
  52.     CHexBin = tmpStr
  53. End Function

  54. Function CbinHex(myStr)
  55.    
  56.     Select Case Len(myStr) Mod 4
  57.         Case 1
  58.             myStr = "000" & myStr
  59.         Case 2
  60.             myStr = "00" & myStr
  61.         Case 3
  62.             myStr = "0" & myStr
  63.         Case Else
  64.             myStr = myStr
  65.     End Select
  66.    
  67.     Dim tmpStr As String
  68.     Dim i
  69.    
  70.     For i = 1 To (Len(myStr) / 4)
  71.         tmpStr = tmpStr & CBinH(Mid(myStr, (i - 1) * 4 + 1, 4))
  72.                
  73.     Next
  74.     CbinHex = tmpStr
  75. End Function

  76. Private Function CBinH(myStr)
  77.     Dim tmpStr As String
  78.         
  79.         Select Case myStr
  80.             Case "0000"
  81.             tmpStr = 0
  82.             Case "0001"
  83.             tmpStr = 1
  84.             Case "0010"
  85.             tmpStr = 2
  86.             Case "0011"
  87.             tmpStr = 3
  88.             Case "0100"
  89.             tmpStr = 4
  90.             Case "0101"
  91.             tmpStr = 5
  92.             Case "0110"
  93.             tmpStr = 6
  94.             Case "0111"
  95.             tmpStr = 7
  96.             Case "1000"
  97.             tmpStr = 8
  98.             Case "1001"
  99.             tmpStr = 9
  100.             Case "1010"
  101.             tmpStr = "A"
  102.             Case "1011"
  103.             tmpStr = "B"
  104.             Case "1100"
  105.             tmpStr = "C"
  106.             Case "1101"
  107.             tmpStr = "D"
  108.             Case "1110"
  109.             tmpStr = "E"
  110.             Case "1111"
  111.             tmpStr = "F"
  112.         End Select
  113.    
  114.     CBinH = tmpStr
  115. End Function
複製代碼

作者: kimbal    時間: 2010-8-5 21:49

Excel 有內建的function~
=HEX2BIN("FFFFFFFFFF")
=BIN2HEX(1111111111)

2003的話用前要加上增集:
Analysis ToolPak add-in
作者: ivanyung    時間: 2010-8-5 23:05

Excel 有內建的function~
=HEX2BIN("FFFFFFFFFF")
=BIN2HEX(1111111111)

2003的話用前要加上增集:
An ...
kimbal 發表於 2010-8-5 21:49



    謝謝,現在才知道增益集有這個功能。。。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)