|
|
@ -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) |
|
|
|
{ |
|
|
|