在C#中分割6位整数

时间:2011-11-02 18:59:31

标签: c# .net

我有一个6位整数,让我们说“153060”,我想分成

int a = 15(前2位),

int b = 30(秒2位数),

int c = 60(第3位数),

首先想到的是将int转换为字符串,使用SubString(或变体)将其拆分,然后转换回int。

这似乎是一种非常低效的方法。任何人都可以推荐一种更好/更快的方法来解决这个问题吗?

谢谢!

附加信息:分割int的原因是因为6位整数代表HHMMSS,我想用它来创建一个新的DateTime实例:

DateTime myDateTime = new DateTime(年,月,日,a,b,c);

但是,用户字段只能接受整数。

4 个答案:

答案 0 :(得分:21)

int y = number / 10000;
int m = (number - y*10000) / 100;
in d = number % 100;

答案 1 :(得分:18)

如果您的最终目标是DateTime,则可以使用TimeSpan.ParseExact从字符串中提取TimeSpan,然后将其添加到DateTime

TimeSpan time = TimeSpan.ParseExact(time, "hhmmss", CultureInfo.InvariantCulture);
DateTime myDateTime = new DateTime(2011, 11, 2);
myDateTime = myDateTime.Add(time);

(假设> = .NET 4)

答案 2 :(得分:13)

这样的事情怎么样?

int i = 153060;

int a = i / 10000;
int b = (i - (a * 10000)) / 100;
int c = (i - ((a * 10000) + (b * 100)));

答案 3 :(得分:6)

您可以在不转换为字符串的情况下执行此操作:

int a = 153060 / 10000;
int b = (153060 / 100) % 100;
int c = 153060 % 100;

我不确定与转换为字符串相比有多高效。我认为这只是4次操作。所以它可能会更快。