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

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

string a = "0x2B";

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

не удается преобразовать строку типа в байт...

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

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

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

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

например:

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

5 ответов


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

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

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

можно использовать ToByte на преобразование вспомогательный класс:

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

обновление:

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

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

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

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

можно использовать utf8encoding дополнительно:

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