Wie bekomme ich Ushort -Daten in C#, A909 für 41104?
-
26-09-2019 - |
Frage
Ich versuche, einen int-Wert in einen 16-Bit-nicht signierten Zeichen (ushort) umzuwandeln. In einem Beispiel ist 41104 A909 in Ushort, aber in C# habe ich mit Code -Beispiel als (mit Hilfe des MSDN -Artikels versucht Bitconverter.getBytes yöltem (uint16)):
byte[] bytes = BitConverter.GetBytes(41104);
string bytes = BitConverter.ToString(byteArray);
//It returns "90-A0"
Wie bekomme ich den A909 -Wert als Ushort für 41104?
Lösung
Tatsächlich ist der richtige (= hexadezimale) Wert A090. Ich habe keine Rolle, ob es sich um Ushort handelt oder nicht, was Sie wollen, ist, das hexadezimale Äquivalent anzuzeigen.
Der Code -Snippet, den Sie bereits bereitgestellt haben, erledigt dies. Ein Byte ist "a0" die andere "90". Sie müssen nur die Bestellung richtig machen.
Eine andere Möglichkeit besteht darin, .NET den Job machen zu lassen
String.Format("{0:X}", 41104);
Wie Sie sehen können, ist es nicht wirklich eine Datenkonvertierung, sondern eine andere Art der Anzeige.
Andere Tipps
Sie müssen die Bytes neu ordnen:
byte[] bytes = BitConverter.GetBytes(41104);
if (BitConverter.IsLittleEndian)
{ List<byte> tmp = new List<byte>();
tmp.AddRange(bytes);
tmp.Reverse();
bytes = tmp.ToArray();
}