【发布时间】:2018-05-08 10:22:46
【问题描述】:
我正在将应用程序从 C 转换为 C#,现在我在使用 ulong 值转换班次时遇到错误。
c++原代码为:
unsigned long long dat = (d >> dat_shift) & (0xffffffffffffffff >> (64 - data_bits_first_frame));
在 C# 中,我认为应该是这样的:
long d = 1158552107947655168;
int dat_shift = 8;
int data_bits_first_frame = 0;
ulong dat = (d >> dat_shift) & (0xffffffffffffffff >> (64 - data_bits_first_frame));
在运行时我收到错误CS0019 Operator '&' cannot be applied to operands of type 'ulong' and 'ulong'。
原因是0xffffffffffffffff。您能帮我理解并解决问题吗?
非常感谢。
【问题讨论】:
-
请显示所有变量的类型,以便我们重现问题。 (我们可以猜测,但如果我们可以复制和粘贴会更容易。)(这是一个令人惊讶的错误消息,考虑到两个
ulong部分。) -
我得到一个不同的错误:ideone.com/Ol7WO3...