Zwei Bytes zu ushort umwandeln



  • Hallo,

    ich schreibe gerade ein Programm, das eine Datei (zur weiteren Verarbeitung) in ein Byte-Array einliest. Die ersten beiden Bytes der Datei (Byte 0 und Byte 1) würde ich nun gerne in eine Variable vom Typ ushort schreiben. Doch ich habe keine Ahnung wie das funktioniert. Könnt ihr mir da weiterhelfen?

    Habe es in dieser Weise versucht:
    ushort magic_number = byte_array[0] + byte_array[1];

    Wie mache ich das am besten?

    Kann man den high- oder low-Teile von short-Variable in C# einzeln ansprechen und so die einzelnen Bytes hineinschreiben?

    Ich danke euch schon mal für eure Antworten.

    Gruß arenas



  • Bitshifting.



  • Wie sieht es denn mit dem BitConverter aus? Siehe: http://ideone.com/Tor5zT



  • Benutze jetzt folgenden Code:

    private void button1_Click(object sender, EventArgs e)
            {
    
                Byte byte_1 = 0x42;         // ASCII: B  (binär: 0100 0010)
                Byte byte_2 = 0x4D;         // ASCII: M  (binär: 0100 1101)
    
                ushort value = conf(byte_1, byte_2);   // value = 01000010 01001101  (0x424D = ASCII: BM)
            }
    
            private ushort conf(Byte byte_1, Byte byte_2)
            {
                uint value = byte_1;        // value = 00000000 00000000 00000000 01000010
                value = value << 8;         // value = 00000000 00000000 01000010 00000000
                value = value + byte_2;     // value = 00000000 00000000 01000010 01001101
    
                ushort rueckgabewert = Convert.ToUInt16(value);     // Typumwandlung
    
                return rueckgabewert;       // Rückgabe
            }
    

    Die beiden Bytes werden nun in die Variable vom Typ ushort geschrieben.

    Bin kein Experte in C#. Könnt ihr mir sagen wie der Code ist? Ist er ganz in Ordnung oder eher stümperhaft?

    Gruß arenas



  • Sieht doch ganz ok aus ;).


Anmelden zum Antworten