Поправьте меня, если я не прав, но вы можете просто использовать
Convert.ToByte(stringValue, 16);
до тех пор, пока stringValue представляет шестнадцатеричное число? Разве это не точка базового параметра?
Строки являются неизменными, я не думаю, что есть способ получить значение байта подстроки char в индексе 0 без создания новой строки