2017-05-04 6 views
0

Je travaille sur l'application C# (.Net 4.0). À une certaine situation, je veux ajouter les multiples valeurs de ushort comme indiqué ci-dessousAjout/Concatage de plusieurs valeurs ushort

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

Et je veux que le résultat que 12304560700.

Actuellement à l'approche ci-dessous

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

Je reçois la valeur temp comme 123456078.

Je comprends que, en raison du type de données ushort, il élimine tout le zéro initial. Mais je m'attends à ce que le résultat soit 12304560700.

J'ai peut-être fait usage de la méthode du padleft mais la longueur et le nombre de zéro ne sont pas fixes, donc cette option ne convient pas non plus à mes besoins.

Je voudrais savoir comment je peux réaliser la même chose, toutes les petites entrées sur le même est également grandement appréciée.

Merci d'avance.

+0

D'où obtenez-vous les casques? Entrée de l'utilisateur? – Sweeper

+0

pas exactement les entrées de l'utilisateur mais de certains périphériques matériels qui sont connectés dans le réseau LAN. – Vsagar

+0

Pouvez-vous montrer comment exactement obtenez-vous les valeurs? Parce que 'ushort's ne peut pas stocker des choses avec les 0 principaux. Vous devez utiliser un autre type de données. Quel type de périphérique matériel? Que représentent les chiffres? – Sweeper

Répondre

0

Vous souhaitez que tous vos numéros soient formatés en utilisant 3 chiffres, avec des zéros en tête si nécessaire. Regardant Standard Numeric Format Strings vous obtenez ceci:

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

s'il vous plaît noter que la longueur et le nombre zéro principal ne sont pas correctif, donc cela ne fonctionnera pas – Vsagar

+0

Alors, la longueur doit être égale à la longueur du plus grand nombre? – themiurge

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

pourquoi ne peux pas le faire u cette façon? le résultat ne sera pas ce que tu veux?

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

résultat que 12304560700.

+0

Bien sûr que non. 045 est le même que 45 et il n'a pas besoin de trois chiffres pour être imprimés, seulement deux. Ainsi: b.ToString() -> "45" pas "045". – themiurge

0

ushorts ne sont pas capables de stocker des nombres avec des zéros à gauche. Dans ses yeux, 45 et 045 sont le même nombre exact.

je vous recommande de stocker seulement les chiffres sous forme de chaînes, comme ceci:

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

Cela est particulièrement facile à faire si vous obtenez ces choses de la console.

+0

peut-être quelque chose comme ceci, si vous savez qu'il y a 3 nombres, \t $ "{a.ToString (" d3 ")} {b.ToString (" d3 ")} {c.ToString (" d3 ")} {d. ToString ("d3")} ". Dump(); – loneshark99

0

Au lieu d'assigner des valeurs à ushort, attribuez-le à une chaîne ou var.

par exemple: chaîne a = "123"; chaîne b = "011" etc. ou var a = "123" etc.

alors var temp = a + b + ... cela fonctionnera. Aucune donnée de magasin de valeur Ushort menant à zéro. Merci