c# 扩展方法奇思妙用基础篇三:byte 常用扩展

本文为《c#扩展方法奇思妙用》系列文章基础篇,比较简单,没有太多技术含量,不用太多解释。同前面,主要提供大家一个思路,如需要使用,请自行完善。

转换为十六进制字符串

 1       public   static   string  ToHex( this   byte  b)
 2      {
 3           return  b.ToString( " X2 " );
 4      }
 5 
 6       public   static   string  ToHex( this  IEnumerable < byte >  bytes)
 7      {
 8          var sb  =   new  StringBuilder();
 9           foreach  ( byte  b  in  bytes)
10              sb.Append(b.ToString( " X2 " ));
11           return  sb.ToString();
12      }

 第二个扩展返回的十六进制字符串是连着的,一些情况下为了阅读方便会用一个空格分开,处理比较简单,不再给出示例。

转换为Base64字符串

1       public   static   string  ToBase64String( byte [] bytes)
2      {
3           return  Convert.ToBase64String(bytes);
4      }

转换为基础数据类型 

1       public   static   int  ToInt( this   byte [] value,  int  startIndex)
2      {
3           return  BitConverter.ToInt32(value, startIndex);
4      }
5       public   static   long  ToInt64( this   byte [] value,  int  startIndex)
6      {
7           return  BitConverter.ToInt64(value, startIndex);
8      }

  BitConverter类还有很多方法(ToSingle、ToDouble、ToChar...),可以如上进行扩展。

转换为指定编码的字符串 

1       public   static   string  Decode( this   byte [] data, Encoding encoding)
2      {
3           return  encoding.GetString(data);
4      }

Hash

 1       // 使用指定算法Hash
 2       public   static   byte [] Hash( this   byte [] data,  string  hashName)
 3      {
 4          HashAlgorithm algorithm;
 5           if  ( string .IsNullOrEmpty(hashName)) algorithm  =  HashAlgorithm.Create();
 6           else  algorithm  =  HashAlgorithm.Create(hashName);
 7           return  algorithm.ComputeHash(data);
 8      }
 9       // 使用默认算法Hash
10       public   static   byte [] Hash( this   byte [] data)
11      {
12           return  Hash(data,  null );
13      }

位运算

 1       // index从0开始
 2       // 获取取第index是否为1
 3       public   static   bool  GetBit( this   byte  b,  int  index)
 4      {
 5           return  (b  &  ( 1   <<  index))  >   0 ;
 6      }
 7       // 将第index位设为1
 8       public   static   byte  SetBit( this   byte  b,  int  index)
 9      {
10          b  |=  ( byte )( 1   <<  index);
11           return  b;
12      }
13       // 将第index位设为0
14       public   static   byte  ClearBit( this   byte  b,  int  index)
15      {
16          b  &=  ( byte )(( 1   <<   8 -   1   -  ( 1   <<  index));
17           return  b;
18      }
19       // 将第index位取反
20       public   static   byte  ReverseBit( this   byte  b,  int  index)
21      {
22          b  ^=  ( byte )( 1   <<  index);
23           return  b;
24      }

保存为文件 

1       public   static   void  Save( this   byte []  data,  string  path)
2      {
3          File.WriteAllBytes(path, data);
4      }

转换为内存流 

1       public   static  MemoryStream ToMemoryStream( this   byte [] data)
2      {
3           return   new  MemoryStream(data);
4      }

小结

  能想到的就这么多了!欢迎大家补充!

 《c#扩展方法奇思妙用》系列文章已有10篇,以后还会陆续发表一些,敬请关注!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值