Как преобразовать строку в байт в 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);
можно использовать 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);
}