我想做的是把十进制的字符  (有中文和符号)
转换成二进制的 Byte 数组
转换后要能够还原成原来的十进制字符的在网上看到一个,他不能转换一些VB中显示不出来的符号,就像用记事本打开EXE程序看到的哪些符号这是网上的原代码
Dim X() As Byte, L As String
    Open App.Path & "\aa.txt" For Binary Access Read As #1      ‘以二进制方式打开文本文件aa.txt
    L = LOF(1)                                                                        ‘取文本文件字节数
    ReDim X(L - 1)                                                                  ‘重定义二进制数组
    Get #1, , X                                                                  ‘将文件内容读入二进制数组
    Close #1
Dim I As Integer, S As String, Tmp As Single
    I = 0
    Do While I <= L - 1
        If X(I) <= 128 Then                                    ‘对于普通字符,直接转换
            S = S & Chr(X(I))
            I = I + 1
        Else                                                      ‘与下一元素组合起来是一个汉字
            Tmp = 256# * X(I) + X(I + 1)
            S = S & Chr(Tmp)
            I = I + 2
        End If
    Loop
    MsgBox S谢谢大家,帮帮忙

解决方案 »

  1.   

    Dim X() As Byte, L As String
        Open App.Path & "\aa.txt" For Binary Access Read As #1      ‘以二进制方式打开文本文件aa.txt
        L = LOF(1)                                                                        ‘取文本文件字节数
        ReDim X(L - 1)                                                                  ‘重定义二进制数组
        Get #1, , X                                                                  ‘将文件内容读入二进制数组
        Close #1
    Dim I As Integer, S As String, Tmp As SingleS = StrConv(X, vbUnicode)    MsgBox S
      

  2.   

    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 格式的这种数组时,使用赋值语句。
      

  3.   

    //在网上看到一个,他不能转换一些VB中显示不出来的符号,就像用记事本打开EXE程序看到的哪些符号VB6是基于ANSI的,只能显示本国语言中的字符
    从Windows2000开始,纪事本支持Unicode,所以支持多语言这也就是Microsoft宣布放弃VB6,推出VB.Net的原因