转换为十六进制字符串
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 }
小结
能想到的就这么多了!欢迎大家补充!