如何在c#中声明十六进制变量

时间:2016-07-07 00:15:43

标签: c# .net hex

如何在c#中声明2个十六进制字节并在“if”中进行比较,如此java代码:

public static final int MSG_GENERAL_RESPONSE = 0x8001;

int type = buf.readUnsignedShort();

if (type == MSG_TERMINAL_REGISTER) {
}

c#2字节是不可能的?我试过并没有找到办法。如何将此代码翻译为c#?

1 个答案:

答案 0 :(得分:0)

在您的情况下使用int(这是一个带符号的32位整数类型)是可以的,但看起来ushort(无符号16位)在这里更精确:< / p>

public const ushort MSG_GENERAL_RESPONSE = 0x8001;

// ...

ushort type = buf.readUnsignedShort();

if (type == MSG_TERMINAL_REGISTER) {
}

请注意,如果您想以十六进制形式提供否定字面值(当前导数字从8F时,那么它就是两个补码),你需要以下笨拙的符号:

// negative:
public const short MSG_GENERAL_RESPONSE = unchecked((short)0x8001);

您无法在C#中使用final。对于类成员,您可以使用static readonlyconst(后者隐式静态)。对于局部变量,您可以使用const