C# Encoding

引用 MSDN 上的原话 : 编码是将一组 Unicode 字符转换为一个字节序列的过程。 与此相反,解码是转换为一系列 Unicode 字符编码字节的序列的过程

我们可以知道 :1.我们程序中的字符串,是Unicode 字符.  2.Encoding 是多种编码集合 3.字符串通过某一编码格式 生成2进制数据。存储文件中。

 

>Encoding 怎样获取

C# 为Encoding 定义了几个类型的派生  我们可以使用 new 派生类的方式创建  也可以 通过 Encoding.语法方式获取(实质就是新建派生类

我们还可以通过 GetEncoding 方法 ,直接输入代码页 或 name ,直接获取 Encoding。这种方式可以获取全部的编码类型 ,而不在局限于语言的派生类。

>Encoding 使用

            byte[] buffer = encoding.GetBytes(t);
            string s = encoding.GetString(buffer);

实现的是字符串和文件数据的转换

>解读文件数据


           //将byte[]数据转换成 16进制的字符串(字符串本身没有任何意义,仅供查看)
           var str = DateTime.Now.ToString();
           var encode = Encoding.UTF8;
           var bytes = encode.GetBytes(str);
           StringBuilder ret = new StringBuilder();
           foreach (byte b in bytes)
           {
               //{0:X2} 大写
               ret.AppendFormat("{0:x2}", b);
           }
           var hex = ret.ToString();


           //将16进制字符串,转变成为byte[] 数据
           string hex = "68A3456D353A";
           var inputByteArray = new byte[hex.Length / 2];
           for (var x = 0; x < inputByteArray.Length; x++)
           {
               var i = Convert.ToInt32(hex.Substring(x * 2, 2), 16);
               inputByteArray[x] = (byte)i;//byte 是一个8个2进制位2,同int之间有隐形转换
           }
            
            
           //2位16进制数据占用一个字节
           

不同的编码方式,对生成的二进制数据的规则是不同

你可能感兴趣的:(C#杂谈之初识C#)