【发布时间】:2011-08-31 10:31:24
【问题描述】:
我正在构建要通过蓝牙进行通信的字节数组。这些字节部分是由枚举类型构建的,例如:
public enum Motor
{
A = 0x00,
B = 0x01,
C = 0x02,
AB = 0x03,
AC = 0x04,
BC = 0x05,
}
稍后在我的代码中,我创建了一个名为 MyMotor 的变量,类型为 MyMotor.B。然后我将此变量传递给我构建字节数组的方法。
我的问题是我通过蓝牙与之通信的软件期望枚举值的十六进制值作为字符串,即 MyMotor.B = 字节 0x01 = dec 1 = 十六进制 31。但是将 MyMotor 直接转换为 char 会导致它评估它的枚举值,即 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
它可以按我的意愿工作,即 command[5] = hex31
我想知道是否有更好的方法。我发现的所有文章都在讨论处理整个字节数组而不是单个字节和字符。
【问题讨论】:
-
您的枚举似乎包含一些基本值及其组合。这就是 [
Flags] 的用途。 -
@svick:
A | C不给他AC。 -
@Mehrdad,我假设他自己创建了枚举,而不关心实际值。
-
@svick:看起来他不能对我这样做......
-
@Mehrdad,啊,我没有阅读整个问题。好吧,我的评论在这里毫无意义。