【问题标题】:What is the equivalent of unsigned long int in c#?c# 中 unsigned long int 的等价物是什么?
【发布时间】:2014-01-31 17:01:30
【问题描述】:

我有一个定义如下的 C 结构:

typedef struct {

    unsigned long int a;

} TEST;

我想创建一个与此结构等效的 C#?

有什么帮助吗?让我困惑的是“unsigned long int”至少是 32 位,这是什么意思,它是 32 位、64 位还是 16 位,对吧?

【问题讨论】:

  • 依赖平台?你能用uint64_t替换C代码中的unsigned long int吗?
  • 我的平台是 64 位的。不,我不能替换它,图书馆已经建成。
  • 检查sizeof(TEST)。 4 -> 32 位,8 -> 64 位。
  • C 类型的大小不取决于“您的系统有多少位”,而是取决于操作系统和编译器约定。例如,windows 64 位上的 long 是 32 位,而在 Linux/Unix 64 位上它是 64 位

标签: c# c++ .net c long-integer


【解决方案1】:

您需要uintulong,具体取决于您的原生C 平台上的intlong

  • C# uint 是 32 位
  • C# ulong 是 64 位

至少和平台依赖性在 C 中是一个必要的问题,因为它实际上被翻译成机器代码,并且 C 是为许多具有不同 字长的架构而开发的。相反,C# 是针对虚拟机定义的(与 JavaJavascript 完全一样),因此可以抽象出硬件的 字长,以支持虚拟机由语言的标准 VM(C# 中的 CLR)定义。 VM 和硬件之间的差异字长由 VM 处理并隐藏到托管代码中。

【讨论】:

  • 我的原生平台是 64 位的。所以,在这种情况下,它是 ulong,对吧?
  • 是的,那肯定是ulong :)
  • @pid 除非 OP 在那个奇异且几乎不使用的平台 Microsoft Windows 上
猜你喜欢
  • 2015-10-20
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 2010-09-24
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多