Byte-Array Konvertieren in Int-likes in C #
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
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