Come arrivare ushort dati in C #, A909 per 41104?
-
26-09-2019 - |
Domanda
Sto cercando di convertire un valore int a un tipo char senza segno a 16 bit (USHORT). In un esempio, 41104 è A909 in ushort, ma in C # Ho provato con codice di esempio come (con l'aiuto di articolo di MSDN BitConverter.GetBytes Yöntem (UInt16) ):
byte[] bytes = BitConverter.GetBytes(41104);
string bytes = BitConverter.ToString(byteArray);
//It returns "90-A0"
Come faccio ad avere il valore A909 come ushort per 41104?
Soluzione
In realtà il valore corretto (= esadecimale) è A090. Non ha importanza che si tratti di ushort o no, ciò che si vuole è quello di visualizzare l'equivalente esadecimale.
il frammento di codice che hai fornito già fa questo. Un byte è "A0" l'altro "90". Devi solo per ottenere il giusto ordine.
Un altro modo è quello di lasciare che .NET fare il lavoro
String.Format("{0:X}", 41104);
Come si può vedere non è proprio una conversione di dati, ma piuttosto un modo diverso di visualizzazione.
Altri suggerimenti
È necessario riordinare i byte:
byte[] bytes = BitConverter.GetBytes(41104);
if (BitConverter.IsLittleEndian)
{ List<byte> tmp = new List<byte>();
tmp.AddRange(bytes);
tmp.Reverse();
bytes = tmp.ToArray();
}