Comment obtenir ushort données en C #, A909 pour 41104?
-
26-09-2019 - |
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?
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();
}