建议试一下:
DIM Z AS BYTE
Z=STRCONV(sReadBuffer,vbUnicode)
附上: 
StrConv 函数
      返回按指定类型转换的 Variant (String)。语法StrConv(string, conversion, LCID)StrConv 函数的语法有下面的命名参数:部分 说明 
string 必要参数。要转换的字符串表达式。 
conversion 必要参数。Integer。其值的和决定转换的类型。 
LCID 可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。) 
设置值conversion 参数的设置值为:常数 值 说明 
vbUpperCase 1 将字符串文字转成大写。 
vbLowerCase 2 将字符串文字转成小写。 
vbProperCase 3 将字符串中每个字的开头字母转成大写。 
vbWide* 4* 将字符串中单字节字符转成双字节字符。 
vbNarrow* 8* 将字符串中双字节字符转成单字节字符。 
vbKatakana** 16** 将字符串中平假名字符转成片假名字符。 vbHiragana** 32** 将字符串中片假名字符转成平假名字符。 
vbUnicode 64 根据系统的缺省码页将字符串转成 Unicode。 
vbFromUnicode 128 将字符串由 Unicode 转成系统的缺省码页。 *应用到远东国别。**仅应用到日本。注意 这些常数是由 VBA 指定的。可以在程序中使用它们来替换真正的值。其中大部分是可以组合的,例如 vbUpperCase + vbWide,互斥的常数不能组合,例如 vbUnicode + vbFromUnicode。当在不适用的国别使用常数 vbWide、vbNarrow、vbKatakana,和 vbHiragana 时,就会导致运行时错误。下面是一些一般情况下的有效分界符:Null (Chr$(0)),水平制表符 (Chr$(9)),换行 (Chr$(10)),垂直制表符 (Chr$(11)),换页 (Chr$(12)) ,回车 (Chr$(13)),空白 (SBCS) (Chr$(32))。在 DBCS中,空白的实际值会随国家/地区而不同。说明在把 ANSI 格式的 Byte 数组转换为字符串时,您应该使用 StrConv 函数。当您转换 Unicode 格式的这种数组时,使用赋值语句。

解决方案 »

  1.   

    谢谢两位朋友,分数给你们了。我已经解决了。
    只要把 
    Dim sReadBuffer         As String * 2048
    sReadBuffer=vbNullString
    改成: Dim sReadBuffer         As String 
     sReadBuffer=Space$(2048)
    就可以。   但是,谁能给我讲讲两者的区别,我就另开帖子给分。
      

  2.   

    sReadBuffer=vbNullString是指sReadBuffer的值为 '\0'
    sReadBuffer=Space$(2048)是指sReadBuffer的值为 '             '(2048个空格的字符串,即 &H2020202020202020202020.......202020)
      

  3.   

    谢谢,到 http://www.csdn.net/expert/topic/534/534215.xml?temp=.5272333 随便回复一下,我给你100 分。
    当然:我原有的意思是想知道:
        为什么是 第二种是对的。我到现在都觉得第一种是对的。
    在 msdn 中 a null-terminated string 我觉得应该是 "\0" 啊。