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?

War es hilfreich?

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();
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top