与and    或or 

解决方案 »

  1.   

        Dim t As Long
        Dim strHex As String
        Dim j As Long
        
        t = 1800000
        strHex = Hex(t)
        strHex = String(8 - Len(strHex), "0") & strHex
        
        For j = 1 To 4
            '把这句改成把各个值赋给数组元素
            MsgBox Val(Mid(strHex, (j * 2) - 1, 2))
        Next
      

  2.   

    取位可以按以下方式:
    byte1 = (Val(StrHex) and 3)
    byte1 = (Val(StrHex) and 12)
    byte1 = (Val(StrHex) and 48)
    byte1 = (Val(StrHex) and 172)
    要本不需要用mid 之类的函数
      

  3.   

    请各位去看看http://www.csdn.net/expert/topicview1.asp
    那个方法行得通,可我想找更简洁的
      

  4.   

    Private Declare Function MemCpy Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) As Boolean
    Private Declare Function htonl Lib "wsock32.dll" (ByVal hostlong As Long) As Long'----------------------------------------------------------------
    Private Const OFFSET_4 = 4294967296#
    Private Const MAXINT_4 = 2147483647
    Private Const OFFSET_2 = 65536
    Private Const MAXINT_2 = 32767Public Function UnsignedToLong(value As Double) As Long
        If value < 0 Or value >= OFFSET_4 Then Error 6 ' Overflow
        If value <= MAXINT_4 Then
              UnsignedToLong = value
            Else
              UnsignedToLong = value - OFFSET_4
        End If
    End FunctionPublic Function UnsignedToInteger(value As Long) As Integer
        If value < 0 Or value >= OFFSET_2 Then Error 6 ' Overflow
        If value <= MAXINT_2 Then
          UnsignedToInteger = value
        Else
          UnsignedToInteger = value - OFFSET_2
        End If
    End FunctionPublic Function FmtHex(A As Byte) As String
        FmtHex = Right("00" + Hex(A), 2)
    End FunctionPrivate Sub Command1_Click()
    Dim sData(3) As Byte
        UnsignedToLong (Val(Text5.Text))
        MemCpy sData(0), htonl(UnsignedToLong(Val(Text5.Text))), 4
        Text1.Text = FmtHex(sData(0))
        Text2.Text = FmtHex(sData(1))
        Text3.Text = FmtHex(sData(2))
        Text4.Text = FmtHex(sData(3))
    End Sub
      

  5.   

    to cmpp.你的分我已经给了,望查收
      

  6.   

    如果你要更简洁的话,直接memcpy到串口即可
      

  7.   

    其实真正的代码只有这么几行:
        MemCpy sData(0), htonl(UnsignedToLong(Val(Text5.Text))), 4
        Text1.Text = FmtHex(sData(0))
        Text2.Text = FmtHex(sData(1))
        Text3.Text = FmtHex(sData(2))
        Text4.Text = FmtHex(sData(3))
    现在我不知道你要发送的什么内容,是字节数组呢,还是字符?
      

  8.   

    to 吴文智,
    当为&H1b的时候,你用byte1 = val(&H1b)得到的是1(它把b不当数字过滤掉了,而我希望byte1 能为&H1b,你的代码还需要修改
      

  9.   

    to cmpp:
    我要当成字节数组发出去
      

  10.   

    to cmpp:
    怎么把一个byte分为高低两个字节,赋值给另外两个byte
    比如byte1 = &Hd3
    怎么把byte2 = &Hd
          byte3 = &H3