请各位帮帮忙,急

解决方案 »

  1.   

    你说的整形是Byte,Integer或 Long?
      

  2.   

    Integer或 Long都可以的.想把这个转成四个字节
      

  3.   


    '就是将数据转换为16进制数.'再每二位二位放至数组中.Option ExplicitPrivate Sub Command1_Click()
       Dim Data As Long
       Dim HData As String
       Data = 123456789
       HData = ConverTenToN(Data, 16, "0123456789ABCDEF")
       
       If Len(HData) Mod 2 = 1 Then
         HData = "0" & HData
       End If
          Dim Arr() As Byte
       ReDim Arr(1 To Len(HData) / 2) As Byte
       
       Dim i As Long
       
       For i = 1 To Len(HData) / 2
         Arr(i) = "&H" & Mid(HData, i * 2 - 1, 2)
       Next
       
       For i = 1 To Len(HData) / 2
         MsgBox Arr(i)
       NextEnd Sub
    '*************************************
       '目的:将10进制数转换为N进制数
       
       '输入: Ten  要转换的十进制数
       '      N    N进制数
       '      Chr  N进制数的字符集
       
       '返回: 成功 转换后的数据
       '      失败 ""
       
    '*************************************Private Function ConverTenToN(ByVal Ten As Long, ByVal N As Long, ByVal Chr As String) As String
     If N <= 1 Then Exit Function
     If Len(Chr) < N Then Exit Function
       While Ten <> 0
         ConverTenToN = Mid(Chr, (Ten Mod N) + 1, 1) & ConverTenToN
         Ten = Int(Ten / N)
       Wend
    End Function
      

  4.   

    上面写错了,是想把integer或long转成四个字节的字节数组.
      

  5.   

    Integer或 Long都可以的.想把这个转成四个字节的字节数组
      

  6.   

    如果是Integer数据类型:
    Option Explicit
        Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Sub Command1_Click()
        Dim a As Integer
        Dim i As Integer
        Dim ByteSj(1) As Byte
        a = 15769
        CopyMemory ByteSj(0), a, 2
        For i = 0 To 1
            Print ByteSj(i)
        Next
    End Sub如果是Long数据类型:
    Option Explicit
        Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Sub Command1_Click()
        Dim a As Long
        Dim i As Integer
        Dim ByteSj(3) As Byte
        a = -2515769
        CopyMemory ByteSj(0), a, 4
        For i = 0 To 3
            Print ByteSj(i)
        Next
    End Sub
      

  7.   


    Integer是2字节数据,16位
    Long是4字节数据,32位
    2者不能混淆,否则翻转时考虑不周会出错。
      

  8.   

    '如 Data= 256
    '返回的数据是 Arr(0)=1 Arr(1)=0'如果用16进制表示为 01*256+00 即256 的16进制是0100
    '再如 Data=624
    '返回的数据是 Arr(0)=2 Arr(1)=112'如果用16进制表示为 02*256+112 即624 的16进制是0270  112的十六进制是 70'再如 Data= 100000
    '返回的数据是 Arr(0)=1 Arr(1)=134 Arr(2)=160'如果用16进制表示为 01*256*256+134*256+160 即100000 的16进制是0186A0
      

  9.   

    谢谢zdingyun和fvflove  .zdingyun的是很实用的API.
    fvflove 你的那段有 点小问题,计算出来的数组倒了.
      

  10.   

    Long长整型数据类型包含了Byte无符号整型数据类型和Integer短整型数据类型,当然你完全可都转为4字节数组,返回时也的按4字节处理。
    API函数CopyMemory可处理SINGLE及DOUBLU浮点小数,详细可参阅本人BLOGhttp://blog.csdn.net/zdingyun/archive/2008/06/09/2528026.aspx “VB的浮点数处理”一文。