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ß
HellsgoreEDIT:
Btw. zu dem Zeitpunkt kannte ich Array.Reverse noch nicht....