Как преобразовать строку в байты в С#?

Как преобразовать эту строку в байт?

string a = "0x2B";

Я пробовал этот код (байт) (a); но он сказал:

Невозможно преобразовать строку типа в байт...

И когда я пробовал этот код, Convert.ToByte(a); и этот byte.Parse(a);, он сказал:

Входная строка не была в правильном формате...

Каков правильный код для этого?

Но когда я объявляю его, например, в массиве, это приемлемо...

Например:

byte[] d = new byte[1] = {0x2a};

Ответ 1

Вы должны указать базу для использования в Convert.ToByte, так как ваша строка ввода содержит шестнадцатеричный номер:

byte b = Convert.ToByte(a, 16);

Ответ 2

byte b = Convert.ToByte(a, 16);

Ответ 3

Вы можете использовать функцию ToByte Convert вспомогательный класс:

byte b = Convert.ToByte(a, 16);

Ответ 4

Update:

Как уже упоминалось, мое первоначальное предложение использовать byte.Parse() с NumberStyles.HexNumber на самом деле не будет работать с шестнадцатеричными строками с префиксом "0x". Лучшее решение - использовать Convert.ToByte(a, 16), как предложено в других ответах.

Оригинальный ответ:

Попробуйте использовать следующее:

byte b = byte.Parse(a, NumberStyles.HexNumber, CultureInfo.InvariantCulture);

Ответ 5

Вы можете использовать UTF8Encoding:

public static byte[] StrToByteArray(string str)
{
    System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
    return encoding.GetBytes(str);
}