Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

C# Convert a Struct σε byte[]

Îåêßíçóå áðü ôï ìÝëïò stefanidou. Τελευταία δημοσίευση από το μέλος object+ στις 31-03-2010, 13:15. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  09-03-2010, 14:51 57568

    C# Convert a Struct σε byte[]


    Καλησπέρα σας,

    Θα μπορούσα να είχα κάποια βοήθεια σχετικά με το πως θα κάνω Convert ενα structure σε byte[] σε C# .Net 3.5?
    Ποιές κλάσεις πρέπει να χρησιμοποιήσω?

    Ευχαριστώ
  •  09-03-2010, 16:33 57570 σε απάντηση της 57568

    Απ: C# Convert a Struct σε byte[]

    Γεια σού,

    Εάν χρησιμοποιείς μόνο primitive types (int, string κλπ) μπορείς να χρησιμοποιήσεις την Marshal class και την method StructToPtr. Έχει πολλά Implementations απο διάφορους, ένα που βρήκα στα γρήγορα:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    static byte [] StructureToByteArray(object obj)
    
    {
    
    int len = Marshal.SizeOf(obj);
    
    byte [] arr = new byte[len];
    
    IntPtr ptr = Marshal.AllocHGlobal(len);
    
    Marshal.StructureToPtr(obj, ptr, true);
    
    Marshal.Copy(ptr, arr, 0, len);
    
    Marshal.FreeHGlobal(ptr);
    
    return arr;
    
    }
    
    static void ByteArrayToStructure(byte [] bytearray, ref object obj)
    
    {
    
    int len = Marshal.SizeOf(obj);
    
    IntPtr i = Marshal.AllocHGlobal(len);
    
    Marshal.Copy(bytearray,0, i,len);
    
    obj = Marshal.PtrToStructure(i, obj.GetType());
    
    Marshal.FreeHGlobal(i);
    
    }


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  09-03-2010, 16:41 57571 σε απάντηση της 57570

    Απ: C# Convert a Struct σε byte[]

    Δυστυχώς δεν χρησιμοποιω μονο primitive types. To συγκεκριμενο structrure που θέλω να μετατρέξω σε byte[] περιέχει κι επιπλέον structures. Είχα δοκιμάσει αυτον τον τρόπο αλλα δυστυχώς δεν κάνει για την περιπτωσή μου.
    Θα ήθελα αν ήταν δυνατόν να μη χρησιμοποιήσω unmanaged κωδικα. Μήπως υπάρχει κάποιος τροπος?
  •  09-03-2010, 16:53 57573 σε απάντηση της 57571

    Απ: C# Convert a Struct σε byte[]

    Μπορείς να χρησιμοποιήσεις την BitConverter αλλά το Implementation της GetBytes για τα types που είναι σύνθετα θα πρέπει να το γράψεις εσύ. Το Marshaling δεν είναι ακριβώς unmanaged κώδικας αλλά θέλει παραπάνω προσοχή με το memory management.
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  09-03-2010, 16:54 57575 σε απάντηση της 57573

    Απ: C# Convert a Struct σε byte[]

    Μήπως θα ήταν καλύτερα να περιγράψεις για πιο σενάριο θέλεις να το κάνεις αυτό; Μήπως υπάρχει διαφορετική προσέγγιση στο πρόβλημα.


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  10-03-2010, 10:16 57588 σε απάντηση της 57575

    Απ: C# Convert a Struct σε byte[]


    Σωστά..

    Λοιπόν αυτό που θέλω να κάνω είναι αυτο το structure το οποιο περιεχει είπαμε κ άλλα structures να το περάσω σε ένα αρχείο και να το ανεβάσω σε ενα ftp.
    Αυτο που σκεφτηκα ειναι να το "γραψω" σε ενα byte[] επειτα να γραψω το byte[] σε ενα stream κ ετσι να διμηουργησω το αρχείο που θα στειλω. Εχετε να προτείνετε κάτι καλυτερο?
  •  31-03-2010, 09:49 57916 σε απάντηση της 57588

    Απ: C# Convert a Struct σε byte[]

    Κάνε Serialization.

    Πρέπει να είναι Serializable και τα υπο-structures
  •  31-03-2010, 13:15 57918 σε απάντηση της 57916

    Απ: C# Convert a Struct σε byte[]

    nikos123:
    Κάνε Serialization.

    Πρέπει να είναι Serializable και τα υπο-structures

    Αυτο Smile .
    (Δες για binaryforrmater)
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems