إم محاولة تحسين فهمي لتنسيق ملف ستس باستخدام برنامج لقراءة جميع بت مختلفة من المعلومات. باستخدام موقع على شبكة الانترنت مع مرجع من أي تعويضات تحتوي على المعلومات، كتبت بعض التعليمات البرمجية التي لديها قارئ ثنائي تذهب من خلال الملف ووضع القيم في المتغيرات الصحيحة. والمشكلة هي أن جميع البيانات هو من المفترض أن تكون كبيرة إنديان، وكل ما قراءة قارئ ثنائي هو ليتل انديان. لذا، ما هي أفضل طريقة للذهاب حول تحديد هذا يمكنني إنشاء فئة تقليد من القارئ الثنائي الذي يعود صفيف عكس من بايت هل هناك شيء يمكنني تغيير في المثال الطبقي من شأنها أن تجعل من قراءة في إنديان كبيرة حتى لا تضطر إلى إعادة كتابة كل شيء هو موضع تقدير أي مساعدة. تحرير: حاولت إضافة Encoding. BigEndianUnicode كمعلمة، لكنه لا يزال يقرأ إنديان قليلا. في رأيي، كنت تريد أن تكون حذرا القيام بذلك. السبب واحد يريد تحويل من بيجينديان ليتلينديان هو إذا كان بايت يجري قراءتها في بيجينديان ونظام التشغيل حساب ضدها تعمل في ليتلينديان. C ليست نافذة اللغة الوحيدة بعد الآن. مع الموانئ مثل مونو، وأيضا غيرها من منصات مايكروسوفت مثل ويندوز فون 78، إكس بوكس 360Xbox واحد، ويندوس سي، ويندوز 8 موبايل، لينكس مع مونو، أبل مع مونو، وما إلى ذلك فمن الممكن تماما منصة التشغيل يمكن أن يكون في بيجينديان، حالة يود يكون شد نفسك إذا قمت بتحويل التعليمات البرمجية دون القيام بأي شيكات. بيتكونفرتر بالفعل حقل على أنه يسمى إسليتلينديان يمكنك استخدام هذا لتحديد ما إذا كانت بيئة التشغيل في ليتلنديان أم لا. ثم يمكنك القيام عكس مشروط. على هذا النحو، أنا في الواقع مجرد كتابة بعض ملحقات بايت بدلا من جعل فئة كبيرة: لذلك تخيل هذا المثال رمز: أجاب 6 فبراير 14 في 7:39 الجواب الخاص بك 2017 ستاك إكسهانج، عندما نقل الأعداد الصحيحة الثنائية عبر شبكة، فمن المهم لضمان أن أنظمة الإرسال والاستقبال تستخدم نفس الشكل أو أن يتم التحويل. إذا أرسل جهاز كمبيوتر بيج إنديان الرقم الثنائي أعلاه إلى كمبيوتر ليتل إنديان بدون تحويل، فسيتم تفسيره على أنه 513. لتجنب المشاكل في شبكة غير متجانسة، يتم تحويل الأرقام الثنائية إلى تنسيق الشبكة القياسية (بيج إنديان) قبل الإرسال. وظائف: هتونس المضيف إلى شبكة قصيرة هتونل المضيف إلى شبكة طويلة يمكن استخدامها لتحويل البيانات الثنائية إلى تنسيق شكل قياسي. ملاحظة تاريخية: أسماء بيج إنديان وليتل إنديان تأتي من رويفتس رويف غوليفرز ترافلز. في هذه القصة انقسمت ليليبوتيانز إلى بيديان إنديانز و ليتل إنديانز على أساس نهاية بيضة مسلوقة يعتقدون أنه يجب فتحها. لقد حاولت البحث في جميع أنحاء ولكن لم تكن قادرة على العثور على الكثير عن الحرفية الثنائية و إنديانيس. هي الحرفية الثنائية القليل إنديان، كبير إنديان أو أي شيء آخر (مثل مطابقة المنصة الهدف) كمثال، ما هي القيمة العشرية من 0b0111. هل هو 7 منصة محددة شيء آخر تحرير: اخترت قيمة سيئة من 7 منذ يتم تمثيله داخل بايت واحد. وقد تم الرد على هذا السؤال بما فيه الكفاية على الرغم من هذه الحقيقة. بعض الخلفية: أساسا إم محاولة لمعرفة ما هي قيمة البتات الأقل أهمية، وإخفاء مع الحرفية الثنائية يبدو وكأنه وسيلة جيدة للذهاب. ولكن فقط إذا كان هناك بعض ضمان حول إنديانيس. طلب ديك 18 14 في 16:21 مكعب: بالطبع الحرفية عشري ديك إنديانيس. that39s لماذا 7x3 هو 21 وليس 12. أي تسلسل أمر من الأرقام، بغض النظر عن قاعدة لديه إنديانيس. منذ النظام يمكن أن تصاعدي أو تنازلي، there39s بطبيعة الحال كبيرة-إنديان والقليل إنديان. (كوتيميدل-إنديانكوت يجري تلك غريبة 3412 تسلسل غير مرتبة) ندش مسالتيرس ديك 18 14 في 17:44 إنديانيس يتعرض أبدا مباشرة في التعليمات البرمجية إلا إذا كنت حقا محاولة للحصول عليه (مثل استخدام الحيل مؤشر). 0b0111 هو 7، نفس القواعد عرافة، الكتابة لا يعني 0x77AA على بعض المنصات لأن ذلك سيكون عبثا. حيث أن 0s اضافية المفقودة تذهب على أي حال سوف تحصل على مبطن على الجبهة، ثم انقلبت كل شيء، أو أنها سوف تحصل على إضافة بعد ليس لدي أي فكرة عما يتوقعه شخص ما إذا كان هذا هو الحال. النقطة هي أن C لا يجعل أي افتراضات حول إندياننس من الجهاز، إذا كنت كتابة التعليمات البرمجية باستخدام الأوليات والحرفية التي يوفرها، فإن السلوك سيكون نفسه من آلة إلى آلة (إلا إذا كنت بدء التحايل على نظام نوع، والتي قد تحتاج إلى القيام به) لمعالجة التحديث الخاص بك: سوف يكون الرقم الطريقة التي تكتب بها. لن يتم إعادة ترتيب بت أو أي شيء من هذا القبيل، وأهم الشيء هو على اليسار وأقل قليلا هو على اليمين. يبدو أن هناك سوء فهم هنا حول ما هي إندانيس. يشير إنديانيس إلى كيفية ترتيب وحدات البايت في الذاكرة وكيف يجب تفسيرها. إذا أعطيتك الرقم 4172 وقال إذا كان هذا أربعة آلاف واحد مائة وسبعين، ما هو إندياننس كنت غير قادر حقا إعطاء إجابة لأن السؤال لا معنى له. (يمكن للمرء أن يجادل بأن أكبر رقم على اليسار يعني إنديان كبير، ولكن إد نختلف أن هذا صحيح). هذا هو مجرد عدد، لا توجد بايت لتفسير، لا توجد عناوين الذاكرة. على افتراض تمثيل عدد 4 بايت صحيح، والبايت التي تتوافق معها هي: لذلك، نظرا لأي من تلك وقال هذا هو التمثيل الداخلي للكمبيوتر من 4172 يمكنك تحديد ما إذا كان لها إنديان قليلا أو كبيرة. حتى الآن النظر الخاص بك ثنائي الحرفية 0b0111 هذه 4 بت تمثل واحدة نبل، ويمكن تخزينها كما ولكنك لا تحتاج إلى الرعاية لأن هذا يتم التعامل معها أيضا من قبل الأجهزة، واللغة تملي أن مترجم يقرأ من اليسار إلى اليمين، إلى الأقل أهمية إنديانيس ليس حول البتات الفردية. وبالنظر إلى أن بايت هو 8 بت، إذا كنت يسلم لك 0b00000111 ويقول هو هذا إنديان قليلا أو كبيرة مرة أخرى كنت غير قادر على القول لأن لديك سوى بايت واحد. إنديانيس لا إعادة ترتيب بت في بايت، يشير إلى إعادة ترتيب بايت كامل (إلا إذا كان لديك بالطبع بايت واحد بت). لم يكن لديك لرعاية ما يستخدم جهاز الكمبيوتر الخاص بك داخليا. 0b0111 فقط يوفر لك الوقت من الحاجة إلى كتابة الاشياء مثل دون الحاجة إلى التعليق شرح أهمية العدد. أود أن أشير إلى أنه في مستوى منخفض بما فيه الكفاية من البرمجة لا يمكنك تجنب إندانييس لأن مواصفات كل ما كنت تنفذ تفويض المدخلات أو النواتج لتكون في ليتلبيغوهيفي مهما إنداني. وهذا يتضمن بروتوكولات الشبكة، خوارزميات التشفير، وهلم جرا. فقط لأنك don39t تفعل هذه الأشياء don39t يعني أنها don39t موجودة، و إنديانيس لا تسرب من لطيفة نوع نظام مريح في هذه الحالات. وبالتالي فإن كوتو ذكي لجزء غودكوت الخاصة يبدو غير مبرر. نداش توماس ديك 19 14 في 2:37 ريانهاينينغ باستخدام هتونس من التعليق الخاص بك: هذا هو سهل التنفيذ دون اتخاذ أي افتراضات حول إنديانيس: uint16t هتونس (uint16t x) أنها تجعل بعض الافتراضات حول تمثيل uint16t. ولكن إنديانيس ليست واحدة من تلك الافتراضات، وعلى الأقل العصابة يحسن هذا جيدا جدا. وأنا أتفق مع التعليق بأن الناس يجب أن يكون عموما كتابة التعليمات البرمجية التي لا تجعل افتراضات حول إنديانيس، فإنه ليس من الضروري فقط. ندش هفد ديك 19 14 في 8:55 يتم تفسير جميع الحرفية صحيح، بما في ذلك الثنائية منها بنفس الطريقة التي نحن عادة قراءة الأرقام (اليسار معظم الأرقام يجري الأكثر أهمية). معيار C يضمن نفس تفسير الحرفية دون الحاجة إلى أن تكون مهتمة مع البيئة المحددة كنت على. وهكذا، لا داعي للقلق نفسك مع إنديانيس في هذا السياق. المثال الخاص بك من 0b0111 يساوي دائما سبعة. لا يستخدم معيار C شروط إنديانيس فيما يتعلق العدد الحرفي. بدلا من ذلك، فإنه يصف ببساطة أن الحرفية لديها تفسير ثابت، وأن التفسير هو واحد كنت تتوقع. C ستاندارد - عدد صحيح الأدب - 2.14.2 - الفقرة 1 عدد حرفي صحيح هو تسلسل من الأرقام التي لا يوجد لها جزء أو الأس، مع اختياري يقتبس واحد يقتبس التي يتم تجاهلها عند تحديد قيمته. قد يحتوي على عدد صحيح حرفي البادئة التي تحدد قاعدته واللاحقة التي تحدد نوعه. الرقم الأول معجميا من تسلسل الأرقام هو الأكثر أهمية. يبدأ عدد صحيح ثنائي حرفي (القاعدة الثانية) ب 0b أو 0B ويتألف من تسلسل من الأرقام الثنائية. عدد صحيح ثماني حرفي (قاعدة ثمانية) يبدأ بالرقم 0 ويتكون من تسلسل من الأرقام الثمانية. يبدأ عدد صحيح عشري حرفي (قاعدة عشرة) برقم غير 0 ويتألف من تسلسل من الأرقام العشرية. يبدأ عدد صحيح سداسي عشري حرفي (قاعدة ستة عشر) مع 0x أو 0X ويتألف من تسلسل من الأرقام الست عشرية، والتي تشمل الأرقام العشرية والحروف من خلال f و A إلى F مع القيم العشرية عشرة خلال خمسة عشر. مثال: يمكن كتابة الرقم 12، 12، 014، 0XC، أو 0b1100. الحرفية 1048576، 1048576، 0X100000، 0x100000، و 0004000000 جميعا لها نفس القيمة. نهاية المثال ويكيبيديا يصف ما إندياننس هو، ويستخدم نظام عددنا كمثال لفهم كبير إنديان. المصطلحات إنديان و إنديانيس تشير إلى الاتفاقية المستخدمة لتفسير البايتات التي تشكل كلمة البيانات عندما يتم تخزين تلك البايتات في ذاكرة الكمبيوتر. نظم كبيرة إنديان تخزين بايت الأكثر أهمية من كلمة في أصغر عنوان ويتم تخزين البايت الأقل أهمية في أكبر عنوان (انظر أيضا الأكثر أهمية). وعلى النقيض من ذلك، تخزن أنظمة ليتل-إنديان البايت الأقل أهمية في أصغر عنوان. مثال على إنديانيس هو التفكير في كيفية كتابة عدد عشري وقراءة في المكان قيمة القيمة. على افتراض نظام الكتابة حيث يتم كتابة الأرقام من اليسار إلى اليمين، موقف أقصى اليسار هو مماثل لأصغر عنوان الذاكرة المستخدمة، ووضع أقصى اليمين أكبر. على سبيل المثال، يتم كتابة عدد مائة وعشرين ثلاثة 1 2 3، مع المئات مكان اليسار أكثر. أي شخص يقرأ هذا الرقم يعرف أيضا أن أقصى اليسار لديها أكبر قيمة المكان. هذا مثال على اتفاقية إنديان كبيرة تتبع في الحياة اليومية. في هذا السياق، نحن ننظر في رقم من حرفي صحيح ليكون بايت من كلمة، والكلمة لتكون الحرفية نفسها. أيضا، يعتبر الطابع الأكثر اليسار في الحرفية أن يكون أصغر عنوان. مع الحرفية 1234. الأرقام واحد، اثنان، ثلاثة وأربعة هي بايت من كلمة، و 1234 هي الكلمة. مع 0b0111 الحرفية الثنائية. والأرقام صفر، واحد، واحد واحد هي بايت من كلمة، والكلمة هي 0111. هذا الاعتبار يسمح لنا أن نفهم إنديانيس في سياق لغة C، ويظهر أن عدد صحيح الحرفية هي مماثلة ل إنديان كبيرة. سمستر عنوان أصغر اليسار أولا. بالطبع نحن عادة don39t استخدام مصطلح إنديانيس لسلاسل عدد على الإطلاق، وفقط للتخطيط في الذاكرة. لذلك يمكن للمرء أن يقول إما أن مصطلح كوتنديانيسكوت لا ينطبق على الحرفية على الإطلاق، أو أنهم 39 بير دائما دائما. قول أن الحرفية هي دائما إنديان قليلا هو بالتأكيد خطأ. نداش كوديسينشاوس ديك 18 14 في 17:22 كنت في عداد المفقودين التمييز بين إنديانيس كما هو مكتوب في شفرة المصدر و إنديانيس كما هو موضح في التعليمات البرمجية الكائن. الجواب عن كل أمر لا يثير الدهشة: الحرفية رمز المصدر هي بيجينديان لأن هذا هو كيف البشر قراءة لهم، في الكائن رمز أنها مكتوبة ولكن الهدف يقرأ لهم. وبما أن البايت هو بحكم التعريف أصغر وحدة من الوصول إلى الذاكرة أنا لا أعتقد أنه سيكون من الممكن حتى أن ينسب إنديانيس إلى أي تمثيل داخلي من البتات في بايت - الطريقة الوحيدة لاكتشاف إنديانيس لأعداد أكبر (سواء عمدا أو مفاجأة ) من خلال الوصول إليها من التخزين بييسويس، والبايت هو بحكم التعريف أصغر وحدة تخزين يمكن الوصول إليها. أجاب ديك 18 14 في 17:58 هركيل إكساكتلي. يمكنك can39t معرفة ما إذا كان الجهاز هي سجلات بيجنديان أو لا لأن تلك لم تتعرض أبدا - هناك 39 سبب لا على الإطلاق لفضح أي إنديانيس ولكن بيجينديانيس في السجلات، لأن النقطة الكاملة من ليتلنديان كان التوافق مع الصودا القش 8bit البيانات الحافلات إلى التخزين الخارجي أو الأجهزة. نداش جثيل ديك 18 14 في 18:23 لغات سيسي لا يهتمون إنديانيس من الأعداد الصحيحة متعددة البايت. سيسي المبرمجين القيام به. المجمعين تحليل التعليمات البرمجية المصدر وتوليد رمز الجهاز لمنصة الهدف المحددة. يقوم المحول، بشكل عام، بتخزين الأحرف الصحيحة بنفس الطريقة التي يخزن بها عددا صحيحا بحيث تدعم تعليمات وحدة المعالجة المركزية المستهدفة بشكل مباشر القراءة وكتابتها في الذاكرة. المترجم يعتني الاختلافات بين منصات الهدف بحيث لم يكن لديك ل. الوقت الوحيد الذي تحتاج للقلق حول إنديانيس هو عندما كنت تقاسم القيم الثنائية مع الأنظمة الأخرى التي لها ترتيب بايت مختلفة. ثم كنت قراءة البيانات الثنائية في، بايت بواسطة بايت، وترتيب وحدات البايت في الذاكرة في الترتيب الصحيح ل النظام الذي يتم تشغيل التعليمات البرمجية الخاصة بك على. الرد أفاتار ديك 18 14 في 17:22 ثيرونوجيناوكس: هها، أن واحد يجب أن يكون قد متعة للتصحيح نعم، المعالجات x86 الافتراضي لمحاكاة قراءة غير محاذاة، والذي يعمل (ولو ببطء) نفس الرمز على معالج آخر سيولد خطأ حافلة. هذا هو متعة عندما you39re الترميز والاختبار على x86، ثم نشر إلى وحدة المعالجة المركزية مختلفة (على سبيل المثال جزءا لا يتجزأ). نداش بسمارس ديك 19 14 في 18:40 قد ترغب في التفكير في C أو C أو أي لغة أخرى باعتبارها إنديان في حد ذاته جوهري (التفكير في كيفية عمل مشغلي بيتس). إذا كان هو الأساسي هو إنديان كبير، و المجمع يضمن أن يتم تخزين البيانات في إنديان كبيرة (قبل ل إندانيس أخرى) ولكن العمليات الخاصة بك قليلا الحكمة تعمل كما لو كانت البيانات إنديان قليلا. الشيء الذي يجب أن نتذكره هو أنه بالنسبة للغة، فإن البيانات في إندان صغيرة. تنشأ المشاكل المتعلقة إندانيس عند إرسال البيانات من نوع واحد إلى الآخر. طالما أنك لا تفعل ذلك كنت جيدة. وقد تم استجوابي حول اللغة سيسي البيان كونه في حد ذاته إنديان قليلا، على هذا النحو أنا تقديم مثال الذي يعرف الكثير كيف يعمل ولكن حسنا هنا أذهب. الإخراج على نظام إنديان قليلا: الإخراج على نظام إنديان كبير: لذلك، إذا كنت لا تعرف المعالجات إنديانيس. حيث كل شيء يخرج الحق في النظام إنديان قليلا وهكذا، وأنا أقول أن لغة سيسي هو في جوهره إنديان قليلا. أجابيد ديك 18 14 في 18:17 تعليقات ليست على تمديد المناقشة هذه المحادثة قد تم نقلها إلى الدردشة. نداش بليفيت 9830 ديك 19 14 في 1:25 يمكن للمرء أن يكتب الاختيار مماثل في لغة التجميع أو أي لغة أخرى لديها مؤشرات. لذلك هذا الرمز يظهر فقط أن كوتليتل-إنديان هو أكثر طبيعية من كبيرة-إنديانكوت هذا لا تنطبق على وجه التحديد إلى سيسي. أيضا، وهذا لا شيء على الاطلاق القيام به حول الحرفية الثنائية في السؤال. نداش أناتوليغ ديك 21 14 الساعة 10:35
No comments:
Post a Comment