2017-05-04 54 views
0

我正在C#应用程序(.Net 4.0)上工作。在某些情况下,我想下面追加/ Concat多个ushort值

Ushort a = 123; 
Ushort b = 045; 
Ushort c = 607; 
Ushort d = 008; 

提到要追加多个USHORT价值观和我想要的结果为12304560700.

目前可以和下面的方法

var temp = Convert.ToString(a) + Convert.ToString(b) + Convert.ToString(c) + Convert.ToString(d); 

我得到的温度值作为123456078.

我明白,由于ushort数据类型,它消除了所有的前导零。但我期待的结果为12304560700.

我可能使用了padleft方法,但长度和前导零计数没有修复,所以该选项也不适合我的要求。

我想知道我怎么能达到同样的效果,同样的任何小投入也非常感谢。

在此先感谢。

+0

你从哪里得到ushort?用户输入? – Sweeper

+0

不完全是用户输入,而是来自某些连接在局域网中的硬件设备。 – Vsagar

+0

你能证明你究竟是如何获得价值的?因为'ushort's不能存储前导0的东西。你必须使用另一种数据类型。什么样的硬件设备?这些数字代表什么? – Sweeper

回答

0

你想要所有的数字格式化为3位数字,如果需要前导零。看着Standard Numeric Format Strings你得到这样的:

var temp = a.ToString("D3") + b.ToString("D3") + ... 
+0

请注意,长度和领先的零计数是不固定的,所以这不会工作 – Vsagar

+0

那么长度需要等于最大数量的长度? – themiurge

0
int a = 123; 
int b = 045; 
int c = 607; 
int d = 008; 

为什么不能ü做这种方式?不会得到你想要的结果吗?

int temp = a.ToString() + b.ToString() + c.ToString() + d.Substring(d.Length - 2); 

结果作为12304560700.

+0

当然不是。 045与45相同,不需要打印三位数字,只需两位。因此:b.ToString() - >“45”不是“045”。 – themiurge

0

ushorts不能够与前导零存储号码的。在它的眼中,45045是相同的确切数字。

,我建议你到数字只是存储为字符串,像这样:

var a = "123"; 
var b = "045"; 
var c = "607"; 
var d = "008"; 

,这是特别容易,如果你是从控制台获得这些事情要做。

+0

也许是这样的,如果你知道有3个数字,则可以使用下面的代码:\t $“{a.ToString(”d3“)} {b.ToString(”d3“)} {c.ToString(”d3“)} {d。 。的ToString( “D3”)}”转储(); – loneshark99

0

而不是分配值给ushort分配给字符串或var。

例如:string a =“123”;字符串b =“011”等或var a =“123”等

然后var temp = a + b + ...这将工作。没有Ushort存储数据以零开头。 谢谢