Frage

BitConverter.ToUInt16 () erwartet, dass der Bytes umgekehrt werden, ich denke, das ist, wie sie im Speicher gespeichert sind. Aber wie kann ich es konvertieren, wenn es nicht umgekehrt ist, w / o das Array modifizieren?

Byte[] ba = { 0, 0, 0, 6, 0, 0 };
BitConverter.ToUInt16(ba, 2); // is 1536/0x0600, but I want 6/0x0006
War es hilfreich?

Lösung

Es klingt wie Sie meine EndianBitConverter wollen in MiscUtil , die Sie, ob Sie können festlegen, will groß oder klein endianness verwenden.

Grundsätzlich bietet es die gleiche Funktionalität wie BitConverter sondern als Instanzmethoden. Sie erhalten dann die entsprechende Art von EndianBitConverter und tun, was man will.

(Es gibt ein bisschen mehr Funktionalität für effizient mit Arrays arbeiten, die nicht für Sie nützlich sein können oder nicht.)

Die Bibliothek geöffnet ist unter einer ziemlich freizügigen Lizenz bezogen.

Andere Tipps

Sie können auch IPAddress.HostToNetworkOrder verwenden.

Ich denke, Ihr bester Anruf das Array mit Array.Reverse Methode umkehren würde.

http: // msdn. microsoft.com/en-us/library/system.array.reverse(VS.71).aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top