要实现把二进制图片数据转可以跟字符合并的字符数据,从网上找了段代码,他会把有些ASC码大于127(象16进值D5)的字节数据丢掉,各位高手,帮忙啊,怎么解决啊?我找的二进制转字符函数如下:
Private Function BinaryToString1(ByVal BinaryStr As Variant) As String
      Dim lnglen     As Long
      Dim tmpBin     As Variant
      Dim strC     As String
      Dim skipflag     As Long
      Dim i     As Long
      skipflag = 0
      strC = ""
        
      If Not IsNull(BinaryStr) Then
              lnglen = LenB(BinaryStr)
              For i = 1 To lnglen
                      If skipflag = 0 Then
                          tmpBin = MidB(BinaryStr, i, 1)
                          If AscB(tmpBin) > 127 Then
                                  strC = strC & Chr(AscW(MidB(BinaryStr, i + 1, 1) & tmpBin))
                                  skipflag = 1
                          Else
                                  strC = strC & Chr(AscB(tmpBin))
                          End If
                      Else
                          skipflag = 0
                      End If
              Next
          End If
          BinaryToString = strC
  End Function

解决方案 »

  1.   

    1、你把图片保存以后,把扩展名改成txt不就OK了,用文本编辑器打开
    2、memorycopy,把数组拷贝到字符串变量去。
    3、用strconv
    一个例子:
    Dim i As Integer
    Dim aryTmp(26) As Byte
    Dim strTmp As String
    '生成一个字节数组
    For i = 97 To 122
        aryTmp(i - 97) = i
    Next
    strTmp = StrConv(aryTmp, vbUnicode)
    Debug.Print strTmp不过再怎么折腾127以上的东西你都显示不出来
      

  2.   

    高手,我用你的三种方法都不行,你可以把图片数据转换后的内容读出来再比较跟以前的二进制与ASC码的异同,督不行,改后数据被改了,第一种大于127的字节数据有的没丢,但是为0的全丢,有的不为0的也会丢,会少很多数据,用第二种,VB自动关闭,用第三种,我上面那个转换函数丢的字节数据,他也会丢高手,怎么办?
      

  3.   

    将每个字节用Hex转成16进制,不足两个字符的前面添0,这样全部为可视字符。
      

  4.   

    我是要用VB的INET控件提交带图片上传的表单,所以要把图片数据跟其他内容一起提交,一起传给WEB服务器,其他内容为字符型的,INET也只能传字符数据,我试过,用二进制对方收到数据也发不了贴