using System.Linq; using Cobilas.Collections; namespace Cobilas.Numeric.Convert { #pragma warning disable CS1591 // O comentário XML ausente não foi encontrado para o tipo ou membro visível publicamente public static class String_Hexadecimal_Extension { #pragma warning restore CS1591 // O comentário XML ausente não foi encontrado para o tipo ou membro visível publicamente /// Checks whether the text value is a hexadecimal value. public static bool IsHexadecimal(this string str) => str.ToUpper().All((c) => { switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'X': return true; default: return false; } }); /// Converts hexadecimal value to decimal. public static decimal HexToDecimal(this string str) { char[] carac = str.ToUpper().Replace("0X", "").Remove(0, 1).ToCharArray(); ArrayManipulation.Reverse(carac); decimal res = 0; for (int I = 0; I < carac.Length; I++) res += HexToByte(carac[I]) * BitArray_Binary_Extension.Pow(16, I); return res; } private static byte HexToByte(char c) { switch (c) { case 'A': case 'a': return 10; case 'B': case 'b': return 11; case 'C': case 'c': return 12; case 'D': case 'd': return 13; case 'E': case 'e': return 14; case 'F': case 'f': return 15; default: return byte.Parse(c.ToString()); } } } }