如何在c#中声明2个十六进制字节并在“if”中进行比较,如此java代码:
public static final int MSG_GENERAL_RESPONSE = 0x8001;
int type = buf.readUnsignedShort();
if (type == MSG_TERMINAL_REGISTER) {
}
c#2字节是不可能的?我试过并没有找到办法。如何将此代码翻译为c#?
答案 0 :(得分:0)
在您的情况下使用int
(这是一个带符号的32位整数类型)是可以的,但看起来ushort
(无符号16位)在这里更精确:< / p>
public const ushort MSG_GENERAL_RESPONSE = 0x8001;
// ...
ushort type = buf.readUnsignedShort();
if (type == MSG_TERMINAL_REGISTER) {
}
请注意,如果您想以十六进制形式提供否定字面值(当前导数字从8
到F
时,那么它就是两个补码),你需要以下笨拙的符号:
// negative:
public const short MSG_GENERAL_RESPONSE = unchecked((short)0x8001);
您无法在C#中使用final
。对于类成员,您可以使用static readonly
或const
(后者隐式静态)。对于局部变量,您可以使用const
。