字符串与byte[]之间的转换
编码
同一个字符在不同的编码下会被编成不同长度的编码,
比如:ACSII,每个字符对应一个字节,实际上只使用了7位,从00h-7Fh。只能表达128个字符。
GB2312,中文的一种编码,每个字符使用两个字节表示。
UTF-8, 可以表达所有unicode字符,每个字符可以用1-3个字节表示。
UTF-16, 可以表达所有unicode字符,每个字符可以用1-2个16位整数表示。
UTF-32, 可以表达所有unicode字符,每个字符可以用1个32位整数表示。
(一)用ASCII码转换
[c-sharp] view plaincopy
1.using System.Text;
2.
3.byte[] b=Encoding.ASCII.GetBytes("yourstring");
4.// 得到:121,111,117,114,115,116,114,105,110,103
5.
6.
7.
8./反向为:
9.byte[] b=new byte[]{121,111,117,114,115,116,114,105,110,103};
10.string str=Encoding.ASCII.GetString(b);
11.//得到:str="yourstring"
(2) System.Text.Encoding.Default
[c-sharp] view plaincopy
1.System.Text.Encoding.Default.GetString(byte[])//字节数组转换成字符串
2.System.Text.Encoding.Default.GetBytes(string)//字符转换成字节数组
3.//或byte[]=Convert.ToByte(string)
(3)需要把string转换为byte[]使用的场景
任何需要把string序列化处理都需要这种转换,比如:
需要把string保存到文件中,必须把string转换成一个有序的字节流,以便系统在硬盘上做物理保存。
对string做加密操作时,加密算法是针对字节进行处理,这时也需要把string转换成字节流以便加密算法对数据进行处理。
String到字节流的转换涉及到使用何种编码,使用不同的编码得到的字节码不同,再从字节码做反操作恢复成string,必须使用编码时使用的编码或者兼容的编码,否则结果就是乱码。
///////////////////////////////////////////////////////////////////////////////////
string转换为byte []的操作
1、 确定使用的编码
字符串数组怎么转成byte使用Encoding类的静态方法GetEncoding方法获得某个类型的Encoding对象。
public static Encoding.GetEncoding(int codepage)
codepage指定这种返回代码页的Encoding
public static Encoding GetEncoding (string name)
name 指定这种返回代码名的Encoding
其中使用到的代码页和代码名在上面表中。
比如要获得一个utf-8的Encoding对象
Encoding myEncoding = Encoding.GetEncoding("utf-8");
2、 从string到byte[]
string sData = “字符串”;
byte[] myByte = myEncoding.GetBytes(sData);
使用GetBytes方法时,不产生前面所说的识别不同UTF格式的前导符。
3、 从byte[]到string
byte[] myByte = new byte[]{};
string sData = myEncoding.GetString(byte[] myByte);
topic.csdn/u/20090722/10/58a9b4b7-a63a-430e-8f25-509231a4ae24.html?seed=795684050&r=58608395#r_58608395
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论