我现在有一个Byte数组,还有一个String定义分别定义如下:
Dim returnChineseStr(255) As Byte   'dll函数中用到的输出缓冲区,不能再小了
Dim chineseText As String * 255      现在我的情况是如此,returnChineseStr中存放的是通过vc的dll的一个输出缓冲区,里面存的是unicode编码,但是一般是没有255字节那么大的,我可以得到这个数组具体有多少字节的数据,比如是10字节,其它的245字节都是空的.
如下:75|109|213|139|56|0|51|0|53|0|......................现在我想把这n个实际字节,放到一个对应的n字节的string里面,该怎么弄...因为我每次取回的returnChineseStr都是不同长度的,有些是8字节,有些是12字节,我想构造出相应的string,比如8个字节的string,12个字节的string,具体怎么弄...

解决方案 »

  1.   

    lstrlen获得长度
    lstrcpy复制到字符串
      

  2.   

    我现在不是要转换unicode到什么的...strconv不合适的....
    我想定义一个动态大小的string,
      

  3.   

    具体的说,我现在是这样字节赋值的chineseText = returnChineseStr 虽然运行起来没问题,但是由于,string现在我是定义成固定的255(当然其它值也可以,但是都是固定的), 这样我得到的chineseText这个string字符串中就有很多空的字符,但是我现在用的是一个控件,这些空的字符串它处理的不好,我就希望能定义成按照不同返回值需要的大小定义的string
      

  4.   

    那可以这样left$(chineseText,instr(1,chineseText,vbnullchar)-1)这串东西就是没空字符的字符串了…………
      

  5.   

    tzwsoho,那样会报错的啊,runtime error 13, type missmatch我是这样引用的
     Dim temLen As Long
    temLen = Left$(chineseText, InStr(1, chineseText, vbNullChar) - 1)我看了instr能得到正确的值,我这里是7,但是那个left$就报了上面的错误
      

  6.   

    SPlit into an Array,then combine!
      

  7.   

    晕…………left$返回的是字符串…………
      

  8.   

    temLen 是 Long
    left$ 返回字符串 怎么可以赋值呢
      

  9.   

    我的那段应该就是你要的结果了,你不用额外处理的了…………不然你可以
    msgbox Left$(chineseText, InStr(1, chineseText, vbNullChar) - 1)
    测试一下~~~
      

  10.   

    前面晕头了,谢谢tzwsoho,问题已解决,给分了..