Logo

רד-בורד: ארכיון

ראשי > תיכנות > left to right-lbf-little(or is it) endian fread()?

15/09/2006 17:53:28 HLL
קודם כל נתרגם את הכותרת - אני רוצה לקרוא מן ההתחלה של קובץ (ltr)
אל תוך מבנה המורכב משדות של ביטים כאשר הסיבית השמאלית של השדה היא הגבוהה בבית הראשון שמכיל את השדה.
ושדה שיתפרס יתפרס על הבית הבא אחריו - החל מצד שמאל... מן הסתם המשך טריוויאלי והגיוני
דוגמא של שדות דלוקים וכבויים:
110000 00000000 1110001 11010000
(כל הדלקות / התכבות מסמנת שדה אחר)

(ניסיון משני להסבר כי בטח לא הבנתם כלום)
טוב אני מודע לכך שזה יהיה קשה, אז אני אתחיל מדוגמא,בוא נאמר ויש לי קובץ המכיל את הסיביות הבאות
קוד:abcdeffffffffggggggggghhhhhiiiii
(כל אות זה שדה אחר)
הייתי רוצה לבנות מבנה (Bit Field) שייצג טיפוסים מהסוג הזה,
תחת VS2003/2005 נתקלתי במספר בעיות - דבר ראשון, המעבד הוא little endian - מה שגורים בעצם לכל השדות שגדולים מתחום הboundry לקפוץ ולהתחיל מצד ימין של ה boundry הבא דוגמא - ב boundry של 1 שדה של 9 סיביות דלוק יראה כך:
קוד:11111111 00000001
ב boundry של 4 בתים שדה של 33 ביטים (אני לא בטוח שאפשר בכלל יותר מ32, אבל אני מניח שזה יהיה התוצאה) יראה כך:
קוד:11111111 11111111 11111111 11111111 00000000 00000000 00000000 00000001

הסיביות באמת רצות משמאל לימין, זה בסדר (דוגמא אם ננסה 10 סיביות עם באונדרי 1 ונשים 1022 (סיבית הכי ימנית בשדה כבוייה) נקבל:
קוד:11111111 00000010
כאשר 2 הסיביות הימניות אכן שייכות לשדה הזה.
-סוף דוגמא )

אולי זה בעיית endian, אני צריך להריץ אימולטור לסביבה little ולבדוק אם זה עובד, אבל אין לי ממש כוח, ואני בספק שזה עדיין יעבוד כמו שאני רוצה ...
בכל אופן כל רעיון - עצה - מחשבה יתקבלו

קצת רפרנסים אולי ישפכו קצת אור על הבעייה:
http://msdn2.microsoft.com/en-us/library/ewwyfdbe.aspx

ltr-lbf
http://www.cs.cf.ac.uk/Dave/C/node13.html#SECTION001321000000000000000[ההודעה נערכה על-ידי HLL ב-15/09/2006 17:55:22]
עמודים: 1