c - يساوي - وحدة قياس البيانات في الحاسب وتساوي 1024 بايت



إنشاء صورة نقطية في C-كيفية كتابة/r/n كما 1 بايت؟ (1)

أحاول إنشاء صورة نقطية في C. أولا ما أريد القيام به هو رأس رأس وجميع البيانات بكسل من ملف صورة نقطية أخرى. المشكلة هي مع عدد '10'، والتي عندما أقرأ انها 1 بايت فقط، ولكن عندما أكتب انها 2 بايت. أعرف عن / r / n الأشياء، ولكن كيف على سبيل المثال الطلاء يمكن حفظه كما شار 1؟

أنا أقرأ الرأس بهذه الطريقة:

unsigned char* header = malloc(54);
fread(header, sizeof(unsigned char), 54, file);

والكتابة بهذه الطريقة:

fwrite(img->fileHeader, sizeof(unsigned char), 54, file);

لديك لاستخدام ios::binary علم ios::binary عند التعامل مع الملفات غير النصية، ودائما:

ofstream myfile;
myfile.open ("example.bin", ios::out | ios::app | ios::binary);

إذا كنت تستخدم ويندوز ولا تحدد ios::binary فلاج عند فتح تياراتك هنا ما يحدث:

13 10 يتم تحويل 13 10 تسلسل إلى 10 عند القراءة: البيانات الفاسدة في الذاكرة. إذا كانت البيانات ثنائية في المقام الأول سيكون من غير المحظوظ للحصول على تلك المتواليات ولكن يمكن أن يحدث

10 إلى 13 10 (كر + لف) عند الكتابة. هذا هو أكثر احتمالا أن يحدث ويفسد ملف الإخراج الخاص بك.

ملاحظة: حتى لو كان فاسدا، والقراءة كنص والكتابة مرة أخرى كما إصلاحات ثنائية الفساد (أو استبدال 13 10 بنسبة 10 )





bitmap