#define TRACE using System; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.Text; namespace ArchestrAServices.Common.Extensions; public static class DataExtensions { public static string ToBase64(this string value) { return Convert.ToBase64String(Encoding.UTF8.GetBytes(value)); } public static string FromBase64(this string value) { string result = string.Empty; if (value != null) { byte[] bytes = Convert.FromBase64String(value); result = Encoding.UTF8.GetString(bytes); } return result; } public static string FromByteArrayToBase64(this byte[] value) { string result = string.Empty; try { result = Convert.ToBase64String(value); } catch (Exception ex) { Trace.WriteLine(ex.Message); } return result; } public static string FromByteArrayToHex(this byte[] value) { StringBuilder stringBuilder = new StringBuilder(); if (value != null) { foreach (byte b in value) { stringBuilder.Append(b.ToString("X2", CultureInfo.CurrentCulture)); } } return stringBuilder.ToString(); } public static byte[] FromBase64ToByteArray(this string value) { byte[] result = null; if (value != null) { try { result = Convert.FromBase64String(value); } catch (Exception ex) { Trace.WriteLine(ex.Message); } } return result; } public static byte[] FromHexToByteArray(this string value) { List list = new List(); if (value != null) { string text = value.Replace(" ", string.Empty); text = text.Replace("\r", string.Empty); text = text.Replace("\n", string.Empty); if (text.Length % 2 == 0) { for (int i = 0; i < text.Length; i += 2) { if (byte.TryParse(text.Substring(i, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out var result)) { list.Add(result); } } } } return list.ToArray(); } public static byte[] Concatenate(this byte[] value, byte[] other) { if (value == null) { throw new ArgumentNullException("value"); } if (other == null) { throw new ArgumentNullException("other"); } List list = new List(); list.AddRange(value); list.AddRange(other); return list.ToArray(); } public static int CompareTo(this byte[] value, byte[] other) { if (value == null) { throw new ArgumentNullException("value"); } if (other == null) { throw new ArgumentNullException("other"); } int num = -1; if (value.Length == other.Length) { num = 0; for (int i = 0; i < value.Length; i++) { if (num != 0) { break; } if (value[i] != other[i]) { num = -1; } } } return num; } }