פורסם 2009 בינואר 216 שנים מה הדרך לעשות את זה? (הSTRUCT מכיל שדות בגדלים שונים).הקובץ הבינארי מכיל את המידע של הSTRUCT איך שהוא נראה בזכרון. (MEMORY DUMP).תודה!
פורסם 2009 בינואר 216 שנים אותו דבר רק הפוך ? תקצה קטע זיכרון בגודל המבנה, ותקרא לתוכו את תוכן הקובץ.
פורסם 2009 בינואר 216 שנים מחבר תודה!וזה יעבוד אפילו אם בתוך הSTRUCT הזה יש עוד תתי STRUCT-ים, שמכילים בתוכם משתנים בגדלים שונים? (32\8 ביט)?
פורסם 2009 בינואר 316 שנים זה לא מדויק.C מסדר את הנתונים ב-struct כך שיהיה להם alignment מתאים לקריאה מהירה. לדוגמא struct שמכיל char ואחריו int בד"כ יתפוס 8 בתים (על x86), תלוי בקומפיילר ובאופציות הקומפילציה. בין ה-char ל-int יהיו 3 בתים עם תוכן לא מוגדר. זה נקרא padding. יש חוקים קצת מורכבים למתי ואיך זה נעשה.אפשרות אחת היא לקרוא מהקובץ את הנתונים אחד אחד. אפשרות שניה היא לכתוב את הקובץ באותה צורה, כך שגם ה-padding נכתוב (לא מומלץ!).אפשרות שלישית היא מה שנקרא packing - להכריח את הקומפיילר "לדחוס" את הנתונים ב-struct לגודל המינימלי. כל קומפיילר עושה את זה אחרת, וזה לא פורטבילי. חפש "struct packing".
פורסם 2009 בינואר 316 שנים זה מאוד מדוייק, לכן ציינתי (ושהוא נכתב לקובץ בצורה דומה), שזה שיטה אחרת להתכוון לכל מה שאמרת בלי לפרט
פורסם 2009 בינואר 316 שנים מחבר זה לא מדויק.C מסדר את הנתונים ב-struct כך שיהיה להם alignment מתאים לקריאה מהירה. לדוגמא struct שמכיל char ואחריו int בד"כ יתפוס 8 בתים (על x86), תלוי בקומפיילר ובאופציות הקומפילציה. בין ה-char ל-int יהיו 3 בתים עם תוכן לא מוגדר. זה נקרא padding. יש חוקים קצת מורכבים למתי ואיך זה נעשה.אפשרות אחת היא לקרוא מהקובץ את הנתונים אחד אחד. אפשרות שניה היא לכתוב את הקובץ באותה צורה, כך שגם ה-padding נכתוב (לא מומלץ!).אפשרות שלישית היא מה שנקרא packing - להכריח את הקומפיילר "לדחוס" את הנתונים ב-struct לגודל המינימלי. כל קומפיילר עושה את זה אחרת, וזה לא פורטבילי. חפש "struct packing".הקובץ כתוב ביחד עם הPADDING(בוודאות), האם השיטה שyousux הציע תעבוד כעת?
פורסם 2009 בינואר 316 שנים בהנחה שזה אותו קוד על אותו סוג מכונה שקומפל עם אותו קומפיילר עם אותם אופציות - כן.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.