zoukankan      html  css  js  c++  java
  • 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.  } 
  • 相关阅读:
    [luogu3393]逃离僵尸岛
    [BZOJ2818]GCD
    [SCOI2015]情报传递
    [NOIP2010]引水入城
    [luogu4315]月下“毛景树”
    「LibreOJ NOI Round #2」不等关系
    [HNOI2013]游走
    Yet Another Minimization Problem
    ZJOI2015 地震后的幻想乡
    [九省联考2018]一双木棋chess
  • 原文地址:https://www.cnblogs.com/jyz/p/1750498.html
Copyright © 2011-2022 走看看