1. 怎么指定一个文件的中的几个字节读取出来?  比如 第2第3个字节读取出来,  再比如 第2个字节只读后4位
2. 下面一段代码我读了第15个字节的内容到变量a,可是print出来为什么是10进制的呢?
    Dim a As Byte
    Dim lngFileLen As Long, i As Long, bytB() As Byte
    lngFileLen = FileLen(App.Path & "\20080212.BIL")
    Debug.Print lngFileLen
   
    Open App.Path & "\20080212.BIL" For Binary As 1
    Get 1, 15, a
    Debug.Print a
    Close

解决方案 »

  1.   

    1.文件中每个字节都是一个8位数.即0-256
    2.如果要读第2个字节
    Get #1, 2, a 
    3.如果要读第3个字节
    Get #1, 3, a 
    4.取得前四位与后四位
     A的后四位:a mod 16
     A的前四位:a/16 
    5.返回用16进程表示
     hex(a) 
      

  2.   

    纠正1楼1个错误
    Byte数据类型属无符号整数,1字节(8位)
    其值的范围在0-255间Dim a As Byte 
        Dim lngFileLen As Long, i As Long, bytB() As Byte 
        lngFileLen = FileLen(App.Path & "\20080212.BIL") 
        Debug.Print lngFileLen 
      
        Open App.Path & "\20080212.BIL" For Binary As 1 
        Get 1, 15, a 
        Debug.Print Hex(a)
        Close
      

  3.   

    对于第一个问题
     Get 1, 1, a   这句只能读1个字节 可不可以直接读连接的两个字节呢?第4个问题
    可以讲讲吗? 为什么 除16取余就能 取8位的后4位呢? 没想明白
      

  4.   

    如果还是有问题:
    1.请确认你的控件的LEFT坐标,与TOP坐标.
    2.确认控件所有容器的HEIGHT与WIDTH.
    3.LEFT坐标或TOP坐标为负值.或大于HEIGHT或WIDTH 那怎么也看不见控件的.
      

  5.   

    也就是将其改为2进程.
    我这只有一个改变进制的方法,你自己去研究一下.
    '*************************************
       '目的:将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'*************************************
       '目的:将N进制数转换为十进制数
       
       '输入: Data  字符串 要转换的N进制数字符串
       '      N     N进制数
       '      Chr   N进制数的字符集
       
       '返回: 成功 转换后的数据
       '      失败 ""
       
    '*************************************
    Private Function ConverNToTen(ByVal N As Long, ByVal Data As String, ByVal Chr As String) As Double
       Dim DataIndex As Long
       ConverNToTen = 0
       For i = 0 To Len(Data) - 1
           DataIndex = FindDataIndex(N, Mid(Data, Len(Data) - i, 1), Chr)
           'Stop
           If DataIndex = -1 Then
              MsgBox "要转换的" & N & "进制数字符集错误!"
              Exit Function
           Else
              ConverNToTen = ConverNToTen + N ^ i * (DataIndex - 1)
           
           End If
       Next
    End Function
    '*************************************
       '目的:N进制数转换为十进制数所用方法,取得字符在N进制字符集中的位置
       
       '输入: CharCount  N进制字符集中字符的总数。即N
       '      FindChar   要寻找的字符集
       '      Chr        N进制数的字符集
       
       '返回: 成功 取得字符的位置
       '      失败 ""
       '
       '示例: FindDataIndex (16,"A",Chr)=10 .Chr中保存有
    '*************************************
    Private Function FindDataIndex(ByVal CharCount As Long, FindChar As String, ByVal Chr As String) As Long
       FindDataIndex = -1
       For i = 1 To CharCount
          If Mid(Chr, i, 1) = FindChar Then
             FindDataIndex = i
             Exit Function
          End If
       Next
    End Function
      

  6.   

    Dim buf(1) As Byte
    ...
    Get 1,5,buf  '取第5,第6个字节分别放在buf(0)和buf(1)中。余数的问题好好看看讲二进制数的书。
      

  7.   

    以下表达式可以获得byte类型变量a的某一位的值,即此位是1还是0:
    iif(a and cbyte(1),1,0) '第一位(最低位)
    iif(a and cbyte(2),1,0) '第二位
    iif(a and cbyte(4),1,0) '第三位
    iif(a and cbyte(8),1,0) '第四位
    ...
    iif(a and cbyte(128),1,0) '第8位(最高位)