我有一个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);
但是,用户字段只能接受整数。
答案 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次操作。所以它可能会更快。