Из строки в виде шестнадцатеричного числа получить массив байтов
Например у меня есть такая строка "A329DF34". Как ее превратить в массив из 4 байтов?
Конечно можно разделить ее на части по 2, дальше каждую часть превратить в число от 0 до 255, а затем сохранить результат в виде байт массива. Но может есть стандартное решение?
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Простое решение "в лоб"
static void Main(string[] args)
{
string hex = "A329DF34";
byte[] bytes = new byte[hex.Length / 2];
for (int i = 0; i < bytes.Length; i++)
bytes[i] = Convert.ToByte(hex.Substring(i * 2, 2), 16);
Console.WriteLine(string.Join(", ", bytes));
}
Вывод в консоль
163, 41, 223, 52
Альтернативаное решение, если в массиве ровно 4 байта
static void Main(string[] args)
{
string hex = "A329DF34";
uint number = Convert.ToUInt32(hex, 16);
byte[] bytes = BitConverter.GetBytes(number);
Array.Reverse(bytes);
Console.WriteLine(string.Join(", ", bytes));
}
Для .NET 5 и новее, есть встроенное решение
static void Main(string[] args)
{
string hex = "A329DF34";
byte[] bytes = Convert.FromHexString(hex);
Console.WriteLine(string.Join(", ", bytes));
}
Больше разных решений можно найти здесь.