Ответ 1
Вы должны указать базу для использования в Convert.ToByte
, так как ваша строка ввода содержит шестнадцатеричный номер:
byte b = Convert.ToByte(a, 16);
Как преобразовать эту строку в байт?
string a = "0x2B";
Я пробовал этот код (байт) (a); но он сказал:
Невозможно преобразовать строку типа в байт...
И когда я пробовал этот код, Convert.ToByte(a);
и этот byte.Parse(a);
, он сказал:
Входная строка не была в правильном формате...
Каков правильный код для этого?
Но когда я объявляю его, например, в массиве, это приемлемо...
Например:
byte[] d = new byte[1] = {0x2a};
Вы должны указать базу для использования в Convert.ToByte
, так как ваша строка ввода содержит шестнадцатеричный номер:
byte b = Convert.ToByte(a, 16);
byte b = Convert.ToByte(a, 16);
Вы можете использовать функцию ToByte Convert вспомогательный класс:
byte b = Convert.ToByte(a, 16);
Update:
Как уже упоминалось, мое первоначальное предложение использовать 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);
}