Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将整数转换为无符号64位整数_C#_Ruby - Fatal编程技术网

C# 如何将整数转换为无符号64位整数

C# 如何将整数转换为无符号64位整数,c#,ruby,C#,Ruby,我正在将此代码从C#转换为Ruby: C#代码 DateTime dtEpoch = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc); string strTimeStamp = Convert.ToUInt64((DateTime.UtcNow - dtEpoch).TotalSeconds).ToString(); now = Time.now.utc epoch = Time.utc(1970,01,01, 0,0,0)

我正在将此代码从C#转换为Ruby:

C#代码

DateTime dtEpoch = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc); 
string strTimeStamp = Convert.ToUInt64((DateTime.UtcNow - dtEpoch).TotalSeconds).ToString();
now = Time.now.utc
epoch = Time.utc(1970,01,01, 0,0,0)
time_diff = ((now - epoch).to_s).unpack('Q').first.to_s            
Ruby代码

DateTime dtEpoch = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc); 
string strTimeStamp = Convert.ToUInt64((DateTime.UtcNow - dtEpoch).TotalSeconds).ToString();
now = Time.now.utc
epoch = Time.utc(1970,01,01, 0,0,0)
time_diff = ((now - epoch).to_s).unpack('Q').first.to_s            

我需要将整数转换为无符号64位整数。解包真的是一种方式吗?

我不确定代码的返回值是多少,但它肯定不是从epoch开始的几秒钟

Ruby在内部以秒的形式存储日期和时间,直到epoch
Time.now.to_i
将准确返回您要查找的内容

require 'date'

# Seconds from epoch to this very second
puts Time.now.to_i

# Seconds from epoch until today, 00:00
puts Date.today.to_time.to_i

简而言之,
Time.now.to_i
就足够了

自1970-01-01T00:00:00.000+0000以来,Ruby在内部以秒为单位存储时间:

Time.now.to_f  #=> 1439806700.8638804
Time.now.to_i  #=> 1439806700
在C#中,您不必将值转换为类似于
ulong
,因为Ruby会自动强制整数类型,这样它就不会违背您的常识


有点冗长的解释:ruby将整数存储为
Fixnum
的实例,如果该数字符合63位大小(不是64位,奇怪吧?),如果该数字超过该大小,ruby会自动将其转换为具有任意大小的
Bignum

unpack
不是你的事
Time.now.to_i
就足够了。@Aetherus Time\u diff=((now-epoch).to_i).要这样做吗?你不需要
epoch
,因为ruby总是将时间存储为epoch之后的秒数。@Aetherus转换为64位怎么样?有点冗长的解释:ruby将整数存储为
Fixnum
的实例,如果该数字符合63位大小(不是64位,是吗?),如果该数字超过该大小,ruby会自动将其转换为具有任意大小的
Bignum