C# byte数组常用扩展浅析(转)

    C# byte数组常用扩展是我们编程中经常会碰到的一些实用性很强的操作,那么C# byte数组常用扩展都有哪些呢?下面将列出并用实例演示常用八种情况。

    C# byte数组常用扩展应用一:转换为十六进制字符串

    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.  } 

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

    C# byte数组常用扩展应用二:转换为Base64字符串

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

    C# byte数组常用扩展应用三:转换为基础数据类型

    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...),可以如上进行扩展。

    C# byte数组常用扩展应用四:转换为指定编码的字符串

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

    C# byte数组常用扩展应用五: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);  

    C# byte数组常用扩展应用六:位运算

    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.  } 

    C# byte数组常用扩展应用七:保存为文件

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

    C# byte数组常用扩展应用八:转换为内存流

    1.  public static MemoryStream ToMemoryStream(this byte[] data)  
    2.  {  
    3. return new MemoryStream(data);  
    4.  } 
posted @ 2010-06-03 09:38  bluealarm  阅读(1021)  评论(0编辑  收藏  举报