WEB开发网      濠电姷鏁告繛鈧繛浣冲洤纾瑰┑鐘宠壘閻ょ偓銇勯幇鍫曟闁稿鍠愰妵鍕冀閵娧佲偓鎺楁⒒閸曨偄顏柡宀嬬畱铻e〒姘煎灡绗戦梻浣筋嚙濮橈箓顢氳濠€浣糕攽閻樿宸ュΔ鐘叉啞缁傚秹宕滆绾惧ジ寮堕崼娑樺缂佹宀搁弻鐔风暋閻楀牆娈楅梺璇″枓閺呯姴鐣疯ぐ鎺濇晝闁靛牆妫欓蹇旂節閻㈤潧浠﹂柛銊ョ埣楠炴劙骞橀鑲╋紱闂佽宕樼粔顔裤亹閹烘挸浜归梺缁樺灦閿曗晛螞閸曨垱鈷戦柟鑲╁仜婵″ジ鎮楀☉鎺撴珖缂侇喖顑呴鍏煎緞濡粯娅囬梻浣瑰缁诲倿寮绘繝鍥ㄦ櫇闁稿本绋撻崢鐢告煟鎼淬垻鈯曢柨姘舵煟韫囥儳绋荤紒缁樼箖缁绘繈宕橀妸褌绱濋梻浣筋嚃閸ㄤ即宕弶鎴犳殾闁绘梻鈷堥弫鍌炴煕閳锯偓閺呮瑧妲愬Ο琛℃斀闁绘劕妯婇崵鐔封攽椤旇棄鍔ら摶鐐烘煕閺囥劌澧柛娆忕箻閺屽秹宕崟顒€娅g紓浣插亾濠㈣泛顑囩粻楣冩煙鐎涙ḿ绠橀柨娑樼У椤ㄣ儵鎮欓鍕紙闂佽鍠栫紞濠傜暦閹偊妲诲┑鈩冨絻椤兘寮诲☉銏犖╅柕澶堝労閸斿绱撴担绋库偓鍝ョ矓瑜版帒鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘 ---闂傚倸鍊烽悞锔锯偓绗涘厾娲煛閸涱厾顔嗛梺璺ㄥ櫐閹凤拷
开发学院软件开发C语言 c#扩展方法奇思妙用基础篇三:byte 常用扩展 阅读

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

 2010-09-30 20:50:47 来源:WEB开发网 闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�闂傚倸鍊风粈渚€骞夐敓鐘插瀭闁汇垹鐏氬畷鏌ユ煙閹殿喖顣奸柛搴$У閵囧嫰骞掗幋婵冨亾閻㈢ǹ纾婚柟鐐灱濡插牊绻涢崱妤冃℃繛宀婁簽缁辨捇宕掑鎵佹瀸闂佺懓鍤栭幏锟�濠电姷鏁告慨顓㈠箯閸愵喖宸濇い鎾寸箘閹规洟姊绘笟鈧ḿ褍煤閵堝悿娲Ω閳轰胶鍔﹀銈嗗笂閼冲爼鍩婇弴銏$厪闁搞儮鏅涙禒褏绱掓潏鈺佷槐闁轰焦鎹囬弫鎾绘晸閿燂拷闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�  闂傚倸鍊烽懗鑸电仚缂備胶绮〃鍛村煝瀹ュ鍗抽柕蹇曞У閻庮剟姊虹紒妯哄妞ゆ劗鍘ч埥澶娢熼柨瀣偓濠氭⒑瑜版帒浜伴柛鎾寸☉閳绘柨顫濋懜纰樻嫼闂佸憡绋戦オ鏉戔枔閺冣偓缁绘稓浠﹂崒姘瀳闂佸磭绮幑鍥嵁鐎n亖鏀介柟閭﹀墯椤斿倹淇婇悙顏勨偓鏍ь潖婵犳艾鍌ㄧ憸蹇涘箟閹绢喗鏅搁柨鐕傛嫹
核心提示:应用一:转换为十六进制字符串1 public static string ToHex(this byte b)2 {3 return b.ToString("X2");4 }5 6 public static string ToHex(this IEnumerable<byte> byt

应用一:转换为十六进制字符串

 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     }

能想到的就这么多了!

Tags:扩展 方法 奇思

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接