byte[] nach int32 convertieren



  • Hi,

    gibt es in C# eine Methode mit der man einen array von bytes in einen
    Integer convertieren kann?



  • Servus,

    ich wüsste es jetzt nicht. Das heißt aber nicht, dass es dort nichts geben könnte. Ich habe mir immer irgendwas eigenes gebastelt...

    Beispiel:

    public static int ByteArrayToInt(byte[] array)
    {
        if ( (array.Length <= 0) || (array.Length > 4) )
            return int.MaxValue;
    
        int result = 0;
        try
        {
            for ( int i = 0; i < array.Length; i++ )
                result = checked ( (result << 8) | array[i] );
        }
        catch
        {
            return int.MaxValue;
        }
    
        return result;
    }
    
    private void DoSomething()
    {
        // Decimal: 123456789
        // Hex: 0x075BCD15
        byte[] b = new byte[] {0x07, 0x5B, 0xCD, 0x15};
    
        int res = ByteArrayToInt(b);
        res = 0;
    }
    

    gruß
    Hellsgore



  • Hallo,

    1. Lösung:

    Byte[] bytes = new Byte[4] { 0xff, 0xff, 0xff, 0xff };
    Int32 integer = 0;
    for(int i = 0; i < bytes.Length; ++i)
    {
    	integer |= bytes[i] << (i*8);
    }
    

    2. Lösung:

    Byte[] bytes = new Byte[4] { 0xff, 0xff, 0xff, 0xff };
    using (BinaryReader br = new BinaryReader(new MemoryStream(bytes)))
    {
    	integer = br.ReadInt32();
    }
    

    Bei der 1. Lösung kannst Du noch eingreifen, wie die Konvertierung genau erfolgen soll.

    Beachte, dass ein Int32 aus genau 4 bytes besteht.

    Grüsse
    Simon



  • Hallo,

    dafür gibt es die Methode 'System.BitConverter.ToInt32'.



  • Ich habe was gefunden. Damit klappt es immer und man muss sich nicht um Big oder Little Indean rumschlagen.

    System.BitConverter.ToInt32



  • Servus,

    stimmt, jetzt fällts mir wieder ein. Ich hatte mir den Kram selbst gebastelt, weil mein 0tes Byte an der letzten Stelle des Arrays steht und nicht an der Ersten. Auf Grund dessen, war ich zu faul gewesen, den Array zu drehen...

    Vergesst meine Lösung, das ist Käse für den Normalfall....

    gruß
    Hellsgore

    EDIT:

    Btw. zu dem Zeitpunkt kannte ich Array.Reverse noch nicht.... 🙂


Anmelden zum Antworten