Question

Je suis en train de convertir une valeur int à un type char non signé 16 bits (USHORT). Dans un exemple, 41104 est A909 à ushort, mais en C # J'ai essayé avec exemple de code comme (avec l'aide de l'article MSDN BitConverter.GetBytes Yöntem (UInt16) ):

byte[] bytes = BitConverter.GetBytes(41104);
string bytes = BitConverter.ToString(byteArray);
//It returns "90-A0"

Comment puis-je obtenir la valeur A909 comme ushort pour 41104?

Était-ce utile?

La solution

En fait, la valeur correcte (= hexadécimal) est A090. Je ne importe que ce soit ushort ou non, ce que vous voulez est d'afficher l'équivalent hexadécimal.

Le extrait de code que vous avez fourni le fait déjà. Un octet est « A0 » l'autre « 90 ». Il vous suffit d'obtenir le bon de commande.

Une autre façon est de laisser faire le travail .NET

String.Format("{0:X}", 41104);

Comme vous pouvez le voir, c'est pas vraiment une conversion de données, mais plutôt d'une manière différente de l'affichage.

Autres conseils

Vous devez réorganiser les octets:

byte[] bytes = BitConverter.GetBytes(41104);
if (BitConverter.IsLittleEndian)
{    List<byte> tmp = new List<byte>();
     tmp.AddRange(bytes);
     tmp.Reverse();
     bytes = tmp.ToArray();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top