Как буквально превратить строковое значение в значение байта? - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть список строк со значениями, подобными этим:

example[0] = "0xFF";
example[1] = "0xA8";

Я пытаюсь буквально установить эти значения как значения байтов, например:

byte x = Convert.ToByte(example[0]);
byte y = Convert.ToByte(example[1]);

Ооо, как я могу это сделать?

Примечание: мне буквально нужно, чтобы переменная байта содержала "0xFF" в качестве значения, например ...

1 Ответ

0 голосов
/ 02 февраля 2019

просто используйте ToByte с соответствующей База .ToByte преобразует оба значения FF и литералы 0xFF, поэтому нет необходимости удалять 0x

var byte = Convert.ToByte(hex, 16)

или

var hexes = new string[] { "0xFF", "0xA8"};
var results = hexes.Select(x => Convert.ToByte(x, 16))
                   .ToArray();

foreach (var item in results)
    Console.WriteLine(item);

Вывод

255
168

Обновление

но есть ли способ конвертировать эти строки, сохраняя структуру Hex?Вы знаете: byte x = 0xFF;

var hexes = new string[] { "0xFF", "0xA8" };
var results = hexes.Select(x => $"byte {Convert.ToByte(x, 16)} = {x}")
                   .ToArray();

foreach (var item in results)
   Console.WriteLine(item);

Выход

byte 255 = 0xFF
byte 168 = 0xA8

Полная демонстрация здесь


Дополнительные ресурсы

ToByte (String, Int32)

Преобразует строковое представлениечисло в указанной базе к эквивалентному 8-разрядному целому числу без знака.

...