C# Int32 in byte [] umwandeln?



  • Hallo Zusammen,

    wie kann ich einen Int32 Wert in ein Byte-Feld umwandeln. Das ganze sollte
    auch für die anderen Typen gehen (z.B Int16, UInt32, Single, Double etc.)



  • habe eine möglichkeit gefunden:

    Int32 tmp = 12345;
    
    byte [] feld = BitConverter.GetBytes(tmp);
    


  • Hi

    sadza79 schrieb:

    habe eine möglichkeit gefunden:

    Int32 tmp = 12345;
    
    byte [] feld = BitConverter.GetBytes(tmp);
    

    das ist ganz gut wenn du primitive Datentype convertieren willst. Problematisch ist es nur wenn du Strukturen oder Klassen umwandeln willst.

    Hier ist mal der Code wenn du eine Struktur in ein Bytearray umwandeln willst.

    /// <summary>Konvertiert einen übergebene Struktur in ein ByteArray.</summary>
    /// <param name="Struct">Die Struktur die konvertiert werden soll.</param>
    /// <param name="SizeOfStruct">Größe der Struktur in Bytes.</param>
    /// <returns>Rückgabe eines ByteArrays welches die Struktur beinhaltet.</returns>
    public static byte[] StructToByteArray( object Struct, Int32 SizeOfStruct )
    {
    	IntPtr	pToStruct	= IntPtr.Zero;
    	byte	[]ByteArray	= new byte[SizeOfStruct];
    
    	pToStruct = Marshal.AllocHGlobal( SizeOfStruct );
    	Marshal.StructureToPtr( Struct, pToStruct, false );
    	Marshal.Copy( pToStruct, ByteArray, 0, SizeOfStruct );
    	Marshal.FreeHGlobal( pToStruct );
    
    	return ByteArray;
    }
    


  • Hallo de_Bert,

    super, danke für den Tip 🙂


Anmelden zum Antworten