如何在 .NET 2003 中编写十六进制和二进制常量
本文关键字:十六进制 二进制 常量 NET 2003 | 更新日期: 2023-09-27 18:31:03
所以,我熟悉GCC 0b00010010
例如编写二进制常量。如何在 .NET 中执行此操作?我主要关注 VB C# 和C++,因为我正在调试/修改这些语言的代码。
如果没有直接的方法可以做到这一点,是否有一条短途路线在以后不会无法阅读和修改?
为说明问题原因而添加的代码:
<FlagsAttribute( )> _
Enum ControlTypeEnum as Short
‘ 5 4 S 3 2 1 M L
None = 0 ‘0x 0 0 0 0 0 0 0 0
Lathe = 1
Mill = 2
P100 = 4 '*
P200 = 8 '*
P300 = 16
P300L = 17 '*
P300SLP = 49 '*
P300M = 18 '*
P300SMP = 50 '*
P400L = 65 '*
P400SLP = 97 '*
P400M = 66 '*
P400SMP = 98 '*
End Enum
'Values with asterisk are valid return values from function
在 C# 中,您可以做的最接近的事情是将其定义为字符串并使用 Convert.ToInt(或等)。
var flags = Convert.ToInt32( "00010010", 2 );
这是功能性的,但冗长和漂亮的嘶吼。你可能会(如果你疯了)考虑一个扩展方法
public static class Extensions
{
public static Int32 toInt(this string me)
{
return Convert.ToInt32(me, 2);
}
}
(...)
var myflags = "00010010".toInt();
(...)
我更喜欢以下内容:
None = 0 = 0
Lathe = 1 = 1
Mill = 2 = 1<<1
P100 = 4 = 1<<2
P200 = 8 = 1<<3
P300 = 16 = 1<<4
S = 32 = 1<<5
P400 = 64 = 1<<6
。然后,稍后在您的代码中,使用 P400 & Lathe & Mill
而不是额外的常量 P400LM
。(根据您更喜欢什么,使用二的幂的十进制或位移表示形式。
如果你已经有一大堆代码依赖于这些enum
并且不想重构,你可以使用
P400LM = 1<<6 | 1<<1 | 1<<0
这清楚地表明了这个标志的组合(在我看来,比67
更清楚。