我在VB.net中读出了一部分数据将其存入Byte()数组中现在我需要将这个Byte数组中所有的的数据转换为一个字符串数据(String),请问有什么办法
---------------------------------------------------------------
首先你要弄清楚你的byte中的编码是什么方式,是Unicode,还是ASCII等等,然后用System.Text.Encoding中的方法去获得。如果是Unicode的,用下式就可以了:
dim sss() as byte
System.Text.Encoding.Unicode.GetString(sss)
---------------------------------------------------------------
System.Text.Encoding 里面的某个Encoding的GetString函数(反函数是GetBytes)。
这里面的某个Encoding包括 Default、AscII、Unicode、UTF7、UTF8。
比如:
Function ConvToStr(ByVal pool() As Byte) As String
Return System.Text.Encoding.Unicode.GetString(pool)
End Function
或者
Function ConvToStr(ByVal pool() As Byte) As String
Return System.Text.Encoding.AscII.GetString(pool)
End Function
至于用那一个,要看那些二进制代码是什么编码的。如果是DOS时代的东西,多数都是ASCII码,如果是Win98以后的多数是Unicode,至于Win95就不好说了,有ASCII也有Unicode的。我的个人经验是不要用Default,因为你根本就搞不清楚所谓的Default是AscII还是Unicode,我在Win2000SP2下面就是AscII的,这让我很费解。如果你是写C/S模式的东西,就更不能用Default了,万一Server的Default = AscII,Client的Default = Unicode,那就麻烦了!
--------------------
在windows2000中,我们打开notepad,保存时默认格式为ANSI,但可以选择其他三种编码进行保存。
ANSI(扩展ASCII和Win95 ANSI字符集):Dos、Windows 3.1/95/98/ME 时代系统预设的标准文字储存格式。是用单字节来存放一个字符。ANSI是American National Standards Institute的缩写。它成立于1918年,是一个自愿性的组织,拥有超过1300个会员,包括所有大型的电脑公司。ANSI专为电脑工业建立标准,它是世界上相当重要的标准。
Unicode:Windows NT/2000/XP系统的默认字符集,是用双字节来存储一个字符的。是世界上所有主要指令文件的联集,包括商业和个人电脑所使用的公用字集。当采用Unicode格式储存文件时,可使用Unicode控制字符辅助说明语言的文字覆盖范围,如阿拉伯语、希伯来语等等各大小语种。用户在“记事本”中输入含有Unicode字符的文字并储存文件时,系统会提示你必须选取“另存为”中的Unicode编码,这些字符才不会被遗失。需要提醒大家的是,部分Windows 2000字型无法显示所有的Unicode字符。如果发现文件中缺少了某些字符,只需将其变更为其它字型即可。
Unicode big endian:在Big-endian处理器(如苹果Macintosh电脑)上建立的Unicode文件中的文字位元组(存放单位)排列顺序,与在Intel处理器上建立的文件的文字位元组排列顺序相反。最重要的位元组拥有最低的地址,且会先储存文字中较大的一端。为使这类电脑的用户能够存取你的文件,可选择Unicodeig-endian格式。
UTF-8:UTF意为通用字集转换格式(Universal Character Set TransformationFormat),UTF-8是Unicode的8位元格式。如果使用只能在同类位元组内支持8个位元的重要资料一类的旧式传输媒体,可选择UTF-8格式。