本帖最后由 huaijingzheng 于 2010-12-01 08:37:16 编辑

解决方案 »

  1.   

    2与3的代码:
    Option Explicit
        Dim bytSj(1 To 4) As BytePrivate Sub Command1_Click()
        Dim i As Long
        Dim lnSj As Long
        lnSj = 99999998
        For i = 1 To Len(CStr(lnSj)) Step 2
            bytSj((i + 1) / 2) = Val("&H" & (Mid(CStr(lnSj), i, 2)))
        Next
        For i = 1 To 4
            Print bytSj(i)
        Next
    End SubPrivate Sub Command2_Click()
        Dim sj As String
        Dim i As Long
        Dim lnSj As Long
        For i = 1 To 4
            sj = sj & Hex(bytSj(i))
        Next
        Print CLng(sj)
    End Sub
      

  2.   

    1
    Private Sub Command1_Click()
       Dim a As Integer, n As Integer
       Dim b As Integer, c As Integer
       Dim i As Integer
       a = 3: n = 15
       For i = 1 To n
         b = a \ 2
         c = (a Mod 2) * (2 ^ 14)
         a = c + b
         Debug.Print a
       Next
       
    End Sub
      

  3.   

    function ROR(long v,integer n) as long
    dim v1 as long
    dim v2 as long
        do
            if n<0 then n=n+16 else exit do
        loop
        n=n mod 16
        select n
        case 0
            ROR=v
        case 1
            v1=(v and &H1&) * &H8000&
            v2=v \ &H2&
            ROR=v1 or v2
        case 2
            v1=(v and &H3&) * &H4000&
            v2=v \ &H4&
            ROR=v1 or v2
        case 3
            v1=(v and &H7&) * &H2000&
            v2=v \ &H8&
            ROR=v1 or v2
        case 4
            v1=(v and &HF&) * &H1000&
            v2=v \ &H10&
            ROR=v1 or v2
        case 5
            v1=(v and &H1F&) * &H800&
            v2=v \ &H20&
            ROR=v1 or v2
        case 6
            v1=(v and &H3F&) * &H400&
            v2=v \ &H40&
            ROR=v1 or v2
        case 7
            v1=(v and &H7F&) * &H200&
            v2=v \ &H80&
            ROR=v1 or v2
        case 8
            v1=(v and &HFF&) * &H100&
            v2=v \ &H100&
            ROR=v1 or v2
        case 9
            v1=(v and &H1FF&) * &H80&
            v2=v \ &H200&
            ROR=v1 or v2
        case 10
            v1=(v and &H3FF&) * &H40&
            v2=v \ &H400&
            ROR=v1 or v2
        case 11
            v1=(v and &H7FF&) * &H20&
            v2=v \ &H800&
            ROR=v1 or v2
        case 12
            v1=(v and &HFFF&) * &H10&
            v2=v \ &H1000&
            ROR=v1 or v2
        case 13
            v1=(v and &H1FFF&) * &H8&
            v2=v \ &H2000&
            ROR=v1 or v2
        case 14
            v1=(v and &H3FFF&) * &H4&
            v2=v \ &H4000&
            ROR=v1 or v2
        case 15
            v1=(v and &H7FFF&) * &H2&
            v2=v \ &H8000&
            ROR=v1 or v2
        end select
    end function想要2和3的答案,再给200分吧。
      

  4.   

    2 3Private Sub Command1_Click()
       Dim a As Long, i As Integer
       Dim b(1 To 4) As Byte, tmp As String
       a = 5556633
       tmp = Format(a, "00000000")
       For i = 1 To 4
           b(i) = Val("&H" & Mid(tmp, i * 2 - 1, 2))
           Debug.Print Hex(b(i)) & "--" & b(i)
       Next
       
       tmp = ""
       For i = 1 To 4
           tmp = tmp & Hex(b(i))
       Next
       Debug.Print Val(tmp)
       
    End Sub
      

  5.   

    刚刚测试通过的代码Function ROR(v As Long, n As Integer) As Long
    Dim v1 As Long
    Dim v2 As Long
        Do
            If n < 0 Then n = n + 16 Else Exit Do
        Loop
        n = n Mod 16
        Select Case n
        Case 0
            ROR = v
        Case 1
            v1 = (v And &H1&) * &H8000&
            v2 = v \ &H2&
            ROR = v1 Or v2
        Case 2
            v1 = (v And &H3&) * &H4000&
            v2 = v \ &H4&
            ROR = v1 Or v2
        Case 3
            v1 = (v And &H7&) * &H2000&
            v2 = v \ &H8&
            ROR = v1 Or v2
        Case 4
            v1 = (v And &HF&) * &H1000&
            v2 = v \ &H10&
            ROR = v1 Or v2
        Case 5
            v1 = (v And &H1F&) * &H800&
            v2 = v \ &H20&
            ROR = v1 Or v2
        Case 6
            v1 = (v And &H3F&) * &H400&
            v2 = v \ &H40&
            ROR = v1 Or v2
        Case 7
            v1 = (v And &H7F&) * &H200&
            v2 = v \ &H80&
            ROR = v1 Or v2
        Case 8
            v1 = (v And &HFF&) * &H100&
            v2 = v \ &H100&
            ROR = v1 Or v2
        Case 9
            v1 = (v And &H1FF&) * &H80&
            v2 = v \ &H200&
            ROR = v1 Or v2
        Case 10
            v1 = (v And &H3FF&) * &H40&
            v2 = v \ &H400&
            ROR = v1 Or v2
        Case 11
            v1 = (v And &H7FF&) * &H20&
            v2 = v \ &H800&
            ROR = v1 Or v2
        Case 12
            v1 = (v And &HFFF&) * &H10&
            v2 = v \ &H1000&
            ROR = v1 Or v2
        Case 13
            v1 = (v And &H1FFF&) * &H8&
            v2 = v \ &H2000&
            ROR = v1 Or v2
        Case 14
            v1 = (v And &H3FFF&) * &H4&
            v2 = v \ &H4000&
            ROR = v1 Or v2
        Case 15
            v1 = (v And &H7FFF&) * &H2&
            v2 = v \ &H8000&
            ROR = v1 Or v2
        End Select
    End Function
      

  6.   

    1、将购物数量(双字节整数),循环右移N次(N界于0-15之间)代码 ,请注意是循环右移,非一般右移。Dim strTmp As String, intSource As Long, intLeft As Long, intRight As LongintRight = intSource \ (2 ^ N)
    intLeft = intSource Mod (2 ^ N)
    strTmp = CStr(intLeft) & CStr(intRight)intSource = Val(strTmp)循环右移可以造成溢出。楼主自己增加一点处理吧。2、将8位整数(如99999999)转BCD码的代码,转换完之间应该为4字节(如99999999转换完后,每个字节存放的数值应为&h99=153)Dim intSource As Long, bytBCD(4) As Byte, i As Long, strTmp As StringstrTmp = CStr(intSource)
    For i = 0 To 3
        bytBCD(i) = Val("&H" & Mid(strTmp, i * 2 +1, 2))
    Next i
    3、将BCD码转长整数的代码,即与2中相反的转换。
    Dim intSource As Long, bytBCD(4) As Byte, i As Long, strTmp As StringFor i = 0 To 3
        strTmp = strTmp & Right("0" & Hex(bytBCD(i)), 2)
    Next i
    If IsNumeric(strTmp) Then intSource = Val(strTmp)
      

  7.   

    好像才回了一个类似的贴子,请参见
    http://topic.csdn.net/u/20101202/07/cd95e8e0-8d4e-4cea-9fb4-0433d769adcf.html?43785
      

  8.   

    楼上小吉兄是个很多年不见的神人你优化的那份ZIP压缩类我还用着呢