如何将这段红宝石代码转换为c#?

时间:2017-04-12 10:26:28

标签: c# ruby

我在Ruby中有这段代码:

server_id = "0xf9f1e687"

actions = "S(#{Time.now.to_f * 1000).to_i.to_s})S(12946;server:#{server_id.to_i(16).to_s})"

如何用C#编写?

我得到的最近的是:

int server_id = (int)new System.ComponentModel.Int32Converter()
                .ConvertFromString("0xf9f1e687");

var actions = "S(" + DateTime.Now.Second + ")S(12946;server:" + server_id + ")";

1 个答案:

答案 0 :(得分:1)

因为你的问题只是将你的字符串转换为int - 我将解决这个问题。数字0xf9f1e687超出了C#Int32的范围。 Int32.MaxValue0x7FFFFFFF。这就是您的转换产生错误(负)值的原因。如果它只是抛出异常会更好,但事实并非如此。要解决此问题,请使用longInt64)或unsigned int(UInt32):

var server_id = (uint) new UInt32Converter()
     .ConvertFromString("0xf9f1e687");
var server_id = (long) new Int64Converter()
            .ConvertFromString("0xf9f1e687");

替代方式:

var server_id = uint.Parse("0xf9f1e687".Replace("0x", ""), NumberStyles.AllowHexSpecifier);