繁体   English   中英

在C#中分割6位整数

[英]splitting a 6 digit integer in C#

我有一个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);

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

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

如果你的最终目标是一个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)

这样的事怎么样?

int i = 153060;

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

你可以这样做,而无需转换为字符串:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM