数字格式

时间:2010-12-15 20:23:31

标签: c# .net-4.0 c#-4.0 formatting

我正在尝试为C类库创建一个C#包装器来控制USB数据总线通信设备。该器件支持连接外部时钟或使用自己的内部时钟,具体取决于器件初始化时设置的值。

制造商为其C库提供了带有以下#define变量

的头文件
#define DATA_SRC_INT = 0x000000000L
#define DATA_SRC_EXT = 0x000000001L
#define DATA_SRC_NONE = 0x00000000FL

所以这让我有了问题。 0x000000000L到底代表什么数字?

我意识到这个问题可能过于简单化了。当我最初写这个问题时,我没有看到大量的可移植C代码。我试图根据收到的一些反馈来澄清我原来的问题。

2 个答案:

答案 0 :(得分:8)

这些值分别为long 0,1和15。后缀L表示它是long字面值,而前缀0x表示十六进制数字文字。

在C#中你也可以做同样的事情(这里不需要L后缀,因为编译器已经知道类型并相应地转换 - 在你的C代码中,定义只是字符串替换,因此这种类型必须随身携带):

public const long DATA_SRC_INT = 0x0;
public const long DATA_SRC_EXT = 0x1;
public const long DATA_SRC_NONE = 0xF;

但除非十六进制表示法产生实际见解(例如位域的组成),否则我通常会坚持使用小数:

public const long DATA_SRC_INT = 0;
public const long DATA_SRC_EXT = 1;
public const long DATA_SRC_NONE = 15;

答案 1 :(得分:3)

0x表示该数字为十六进制。最后的L意味着它很长。

所以...列出的数字分别为0,1和15。