Wie kann ich zwei bytes und kombinieren Sie zu einem einzigen UInt16 in C#?
Ich will eine Methode, mit dem Körper:
public UInt16 ReadMemory16(Byte[] memory, UInt16 address)
{
//read two bytes at the predefined address
}
So, ich möchte den Wert in Speicher[Adresse] UND das nächste byte und kombinieren Sie zu einem einzigen UInt16.
Für die Reihenfolge der bytes an, die Maschine, die ich bin, die Umsetzung ist little-endian, wenn das zählt. Wie bekomme ich diese beiden byte-Werte und kombinieren Sie zu einem einzigen UInt16 in C#?
- Was genau meinst du mit der Maschine ich bin die Implementierung ist little endian? Sie bedeutete, dass die Reihenfolge der bytes in dem Speicher-array wird immer little endian? Oder die Maschine, die Ihr .NET-Programm ausgeführt wird, ist immer little-endian? Oder beides?
- Byers, ich Emuliere ein toy machine. So, die Maschine, die ich bin, die Umsetzung wird immer little-endian.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie ein bitshift:
Könnten Sie die BitConverter Klasse, aber bewusst sein, dass es eine statische readonly-Feld namens IsLittleEndian, dass Sie sollten überprüfen, bevor Sie es verwenden. Wenn es bereits zu little-endian-dann können Sie diese Klasse verwenden, aber wenn es auf den falschen Wert, den Sie ändern können.
Alternativ kann man einen Blick auf Jon Skeet ist MiscUtil Bibliothek, die beinhaltet, wie EndianBitConverter Klasse, können Sie angeben, die endianness.
Eine Möglichkeit ist die Verwendung der
BitConverter
Klasse:Dieser interpretiert die bytes entsprechend der nativen endianness der Maschine.
Können Sie Bitconverter.ToUInt16: http://msdn.microsoft.com/en-us/library/system.bitconverter.touint16(v=VS.85).aspx