HexConverter
HexConverter.Printer<>() returns hexadecimal string printer for any integer type that implements IBinaryInteger<>.
IWriterToRef<int, string> printer = HexConverter.Printer<int>();
string hexPrint = printer.Read(-1); // "FFFFFFFF"
HexConverter.TryGetPrinter(type, out printer) tries to get hex printer.
if (HexConverter.TryGetPrinter(typeof(int), out IWriterTo<string> printer))
{
string hexPrint = printer.ReadAs<int, string>(-1); // "FFFFFFFF"
}
HexConverter.Printer<byte[]>() returns printer for byte[].
IWriterToRef<byte[], string> printer = HexConverter.Printer<byte[]>();
string hexPrint = printer.Read(new byte[] { 0, 1, 0, 0 }); // "00010000"
HexConverter.Parser<>() returns parser for any integer type that implements IBinaryInteger<>.
IWriterToRef<string, int> parser = HexConverter.Parser<int>();
int value = parser.Read("0000FFFF"); // 65535
HexConverter.TryGetParser(type, out parser) tries to get parser.
if (HexConverter.TryGetParser(typeof(int), out IWriterFrom<string> parser))
{
int value = parser.ReadAs<string, int>("0000FFFF"); // 65535
}
HexConverter.Parser<byte[]>() returns parser for byte[].
IWriterToRef<string, byte[]> parser = HexConverter.Parser<byte[]>();
byte[] data = parser.Read("0000FFFF"); // { 0, 0, 255, 255 }
BigInteger can parse from string of any length.
BigInteger value = HexConverter.Parser<BigInteger>().Read("101010202020ffffffff505050505050505050101010202020ffffffff505050505050505050");
// 2045024474605319746401107586137662836757534452421273536784680433610439286847942484728762448
HexAttribute.Instance is used in ConverterRequest to query for hex printer and parser.
// Create service stack
IService service = Services.Create(ConverterHandlers.Instance);
// Create converter request
ConverterRequest hexParserRequest = new ConverterRequest(HexAttribute.Instance, typeof(int));
// Query converter
IWriterToRef<string, int> hexParser = service.GetRequired<ConverterRequest, IWriterToRef<string, int>>(hexParserRequest);
// Parse
int value = hexParser.Read("0000FFFF"); // 65535
Full Example
Full example
using System.Numerics;
using Avalanche.Converter;
using Avalanche.Service;
using Avalanche.Utilities;
using Avalanche.Writer;
public class hexconverter
{
public static void Run()
{
{
// <01>
IWriterToRef<int, string> printer = HexConverter.Printer<int>();
string hexPrint = printer.Read(-1); // "FFFFFFFF"
// </01>
}
{
// <02>
if (HexConverter.TryGetPrinter(typeof(int), out IWriterTo<string> printer))
{
string hexPrint = printer.ReadAs<int, string>(-1); // "FFFFFFFF"
}
// </02>
}
{
// <03>
IWriterToRef<byte[], string> printer = HexConverter.Printer<byte[]>();
string hexPrint = printer.Read(new byte[] { 0, 1, 0, 0 }); // "00010000"
// </03>
}
{
// <04>
IWriterToRef<string, int> parser = HexConverter.Parser<int>();
int value = parser.Read("0000FFFF"); // 65535
// </04>
}
{
// <05>
if (HexConverter.TryGetParser(typeof(int), out IWriterFrom<string> parser))
{
int value = parser.ReadAs<string, int>("0000FFFF"); // 65535
}
// </05>
}
{
// <06>
IWriterToRef<string, byte[]> parser = HexConverter.Parser<byte[]>();
byte[] data = parser.Read("0000FFFF"); // { 0, 0, 255, 255 }
// </06>
}
{
// <07>
BigInteger value = HexConverter.Parser<BigInteger>().Read("101010202020ffffffff505050505050505050101010202020ffffffff505050505050505050");
// 2045024474605319746401107586137662836757534452421273536784680433610439286847942484728762448
// </07>
}
{
// <08>
// Create service stack
IService service = Services.Create(ConverterHandlers.Instance);
// Create converter request
ConverterRequest hexParserRequest = new ConverterRequest(HexAttribute.Instance, typeof(int));
// Query converter
IWriterToRef<string, int> hexParser = service.GetRequired<ConverterRequest, IWriterToRef<string, int>>(hexParserRequest);
// Parse
int value = hexParser.Read("0000FFFF"); // 65535
// </08>
}
}
}