diff --git a/Apewer/BytesUtility.cs b/Apewer/BytesUtility.cs index 066efb9..eb31af8 100644 --- a/Apewer/BytesUtility.cs +++ b/Apewer/BytesUtility.cs @@ -223,6 +223,33 @@ namespace Apewer return new string(chars); } + /// 将字节数组格式化为十六进制字符串,可指定大小写。 + /// 例:D41D8CD98F00B204E9800998ECF8427E + 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(); + } + /// Byte[] -> Base64 public static string ToBase64(params byte[] bytes) {