| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -223,6 +223,33 @@ namespace Apewer | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            return new string(chars); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        /// <summary>将字节数组格式化为十六进制字符串,可指定大小写。</summary>
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        /// <remarks>例:D41D8CD98F00B204E9800998ECF8427E</remarks>
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        public static string ToX2(this byte[] bytes, string separator, bool upper = true) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if (bytes == null) return ""; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            var join = separator.NotEmpty(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            var length = bytes.Length; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if (length < 1) return TextUtility.Empty; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            var sb = new StringBuilder(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            var hex = upper ? UpperHex : LowerHex; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            for (var i = 0; i < length; i++) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                var value = bytes[i]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                var offset = i * 2; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                var a = hex[value / 16]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                var b = hex[value % 16]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                if (i > 0 && join) sb.Append(separator); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                sb.Append(a); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                sb.Append(b); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            return sb.ToString(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        /// <summary>Byte[] -> Base64</summary>
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        public static string ToBase64(params byte[] bytes) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |