标签: ulong

如何 C# 将 ulong 转换为 DateTime?

在我的 C# 程序中,我从 PLC 接收日期时间。它以“ ulong ”格式发送数据。如何将 ulong 转换为 DateTime 格式?例如我收到:

ulong timeN = 99844490909448899;//time in nanoseconds
Run Code Online (Sandbox Code Playgroud)

然后我需要将其转换为 DateTime ("MM/dd/yyyy hh:mm:ss") 格式。

我该如何解决这个问题?

c# datetime ulong

3
推荐指数
1
解决办法
5913
查看次数

从文本文件读取行超过Int.Max行数

我用Google搜索并查看了几个答案,但我还没有找到解决方案:我有一个.txt文件,其中包含超过int.max的行数.如何读取编号> int.max的特定行?我发现这个问题的答案被列为能够

string line = File.ReadLines(FileName).Skip(14).Take(1).First();
Run Code Online (Sandbox Code Playgroud)

但遗憾的是.Skip()扩展方法不接受Long(或在我需要的情况下为ULong)参数.

所以我开始寻找重载.Skip扩展(或更准确地使我自己)接受ULong并发现对我没有帮助,因为它与Linq实体有关.

请有人帮我理解如何从行号为> int32.Max的文本文件中读取特定行

谢谢

c# file ulong

3
推荐指数
1
解决办法
101
查看次数

为什么我不能将(1 << 31)分配给ulong var?(错误25常量值...无法转换...)

为什么这个分配会产生一个comile错误:Constant value '-2147483648' cannot be converted to a 'ulong'我必须使用unchecked (...)这个案例?

ulong xDummy30 = (1 << 30); // works
ulong xDummy31 = (1 << 31); // ERROR 25 Constant value '-2147483648' cannot be converted to a 'ulong'
ulong xDummy32 = (1 << 32); // works
Run Code Online (Sandbox Code Playgroud)

使用它代替工作:

ulong xDummy31a = unchecked((ulong)(1 << 31));
// or
ulong xDummy31b = (1ul << 31); //  comment from Regis Portalez
Run Code Online (Sandbox Code Playgroud)

c# ulong

2
推荐指数
1
解决办法
833
查看次数

如何将一个非常大的数字提升到一个非常强大的力量?

我有一个ulong值,我需要提高到高功率,但Math.Pow不能成功产生正确的输出.

我的c#代码:

 ulong a = 9123456789;
 ulong b = (ulong)Math.Pow(a, 9999);
 Console.WriteLine(b);
Run Code Online (Sandbox Code Playgroud)

屏幕输出为0.如何执行此计算并获得正确的结果?

c# ulong pow

2
推荐指数
1
解决办法
1324
查看次数

合并2个整数并将其存储在ulong中

我有一个Dictionary<int,ulong>,我想存储的地方StudentId和他/她的注册courses(保证是2).

现在,正如您所看到的,List我想将它们存储ulongulong占用64位并int占用32位,而不是将2个courseid保存为整数.

所以我的问题是,我如何组合这两个整数id并将它们存储到一个ulong变量中.我尝试了一些Bitwise操作和转移,但无法弄明白.

c# bit-manipulation bitwise-operators ulong

2
推荐指数
1
解决办法
78
查看次数

C# - 转换为十六进制/ ulong值的重要部分

如何将十六进制/多数字的重要部分作为字符串?

例如,如果我有0x00000321321,我想得到"321321".

如果我尝试类似的东西:

ulong x = 0x0000023632763;
string s = x.toString();
Run Code Online (Sandbox Code Playgroud)

我知道593700707,所以这不是我想要的.

那可能吗 ?

谢谢!

c# string ulong

1
推荐指数
1
解决办法
1004
查看次数

快速二进制数字计数器64位数字c#

我试图在任何地方找到解决方案.我的请求是找到一个非常快速的算法代码,以获得无符号64位积分器(ulong)的二进制表示中的位数.

例如:

127 = 7 binary digits.

153 = 8 binary digits.
Run Code Online (Sandbox Code Playgroud)

我现在找到了两种方法来获得这个.

  • 通过在字符串中修剪二进制表示,并使用".Length"属性.
  • 通过获得不超过数字的2的最大功率.结果是二进制表示的最后一个位置,并且还指示如果添加1(表示2 ^ 0)的位数

两种方式都很好,但是当数量很大时,计算时间太长.在10.000.000.000(10亿)之后,你必须计算花费的时间,而不是毫秒,这对于其余代码的性能来说是如此糟糕.

非常感谢并且对于演示文稿感到抱歉,这是用手机写的,我没有所有的工具来把这个更好的和正确的.

编辑1

通过深入了解Bithacks网站并将速度作为首要任务.我想我将使用具有De Bruijn序列实现的Lookup表方法.

正如我在这里找到的:具有2 ^ 6的64位的查找表应该是这样的.

static readonly int[] MultiplyDeBruijnBitPosition2 = new int[64]
{
  0,1,2,4,8,17,34,5,11,23,47,31,63,62,61,59,
  55,46,29,58,53,43,22,44,24,49,35,7,15,30,60,57,
  51,38,12,25,50,36,9,18,37,10,21,42,20,41,19,39,
  14,28,56,48,33,3,6,13,27,54,45,26,52,40,16,32
};
Run Code Online (Sandbox Code Playgroud)

在此基础上,用户"R .."从#1,他让自己的paramether,在C#应该是这样的:

public static int GetLog2_DeBruijn(ulong v)
{
return MultiplyDeBruijnBitPosition2[(ulong)(v * 0x022fdd63cc95386dull) >> 58];
}
Run Code Online (Sandbox Code Playgroud)

结果真的很快但错了,我不确切知道为什么.PD:正如您所看到的"0x022fdd63cc95386dull"是128位,C#的接受代码是"0x022fdd63cc95386d".与此处的查找表中显示的相同.

我想因为我不能在C#中使用"0x022fdd63cc95386dull",我必须使用另一个数字而不是58,或者可能是一个完全不同的十六进制64位乘数.

到目前为止,输入的数字为:17012389719861204799(使用了64位)

  • 使用pow2方法我在1380ms内得到64百万次的结果.
  • 使用DeBruijn方法,我在32ms内得到结果40百万次.(不知道为什么40)

c# binary performance counter ulong

1
推荐指数
1
解决办法
518
查看次数

在C和C#中添加两个无符号值

我在c中有一个计算,我应该在c#中编写它

这是我在c中的代码:

const unsigned long *S //which is an array that already contains data ) 
unsigned long  y;
y = y + S[d]; //S[d] = 2582066069 and y = 3372499074 and the results is 1659597847
Run Code Online (Sandbox Code Playgroud)

但在我的C#代码中:

ulong[] S = (ulong[])hashtable[key];
ulong y = 2582066069;
y = y + S[d]; // s[d] = 3372499074 but the result is = 5954565143
Run Code Online (Sandbox Code Playgroud)

我不会动摇c和c#中这个添加操作的差异你会不会让我感到烦躁不安和我做错了?

c c# unsigned ulong

0
推荐指数
1
解决办法
79
查看次数