Я строю массивы байтов для связи по Bluetooth. Эти байты частично построены из перечислимых типов, таких как следующие:
public enum Motor
{
A = 0x00,
B = 0x01,
C = 0x02,
AB = 0x03,
AC = 0x04,
BC = 0x05,
}
Позже в моем коде я создаю переменную с именем MyMotor типа MyMotor.B. Затем я передаю эту переменную методу, в котором я строю свой байтовый массив.
Моя проблема в том, что программное обеспечение, с которым я общаюсь через Bluetooth, ожидает шестнадцатеричное значение перечисленного значения в виде строки, т.е. MyMotor.B = байт 0x01 = dec 1 = hex 31. Однако приведение MyMotor непосредственно к символу приведите его к его перечисляемому значению, т.е. MyMotor = B = hex 42.
По разным причинам я не могу изменить свой исчерпывающий список, поэтому я остановился на том, что похоже на очень взломанный вместе двухстрочный фрагмент кода:
String motorchar = Convert.ToString(Convert.ToInt32(MyMotor)); // convert to temp var
command[5] = (byte)(motorchar[0]); // store hex value of var
Это работает так, как я хотел бы, т.е. команда [5] = hex31
Интересно, есть ли лучший способ? Все статьи, которые я нашел, говорят о работе с целыми байтовыми массивами, а не с отдельными байтами и символами.