Mostafa mahmoud3 نشر 21 أغسطس 2021 أرسل تقرير مشاركة نشر 21 أغسطس 2021 قراءة من ملف وعمل لوب كل مرة تقرأ 8 بايت وإخراج الناتج مثل هذا 11111110101001010101110011101010010101010100110010101010101001 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Ali Haidar Ahmad نشر 21 أغسطس 2021 أرسل تقرير مشاركة نشر 21 أغسطس 2021 (معدل) ######################### إنشاء ملف ثنائي ############ # إنشاء ملف ثنائي # w تشير إلى وضع الكتابة # b تشير إلى ملف ثنائي f=open("binfile.bin","wb") # تعريف مصفوفة num=[5, 10, 15, 20, 25] # تحويلها لصيغة ثنائية arr=bytearray(num) # كتابتها في ملف f.write(arr) f.close() ######################### قراءته ############## import pathlib s="" for byte in pathlib.Path("binfile.bin").read_bytes(): # decimal ستقرأ البايت وتحوله ل s+="{0:b}".format(byte) # s نحوله لثنائي مرة أخرى ونضيف ماقرأناه ل print(s) # 101101011111010011001 حيث أن pathlib تسمح لنا بالمرور على الملف بايت بايت. تم التعديل في 21 أغسطس 2021 بواسطة Ali Haidar Ahmad 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Mostafa mahmoud3 نشر 21 أغسطس 2021 الكاتب أرسل تقرير مشاركة نشر 21 أغسطس 2021 بتاريخ 40 دقائق مضت قال Ali Haidar Ahmad: ######################### إنشاء ملف ثنائي ############ # إنشاء ملف ثنائي # w تشير إلى وضع الكتابة # b تشير إلى ملف ثنائي f=open("binfile.bin","wb") # تعريف مصفوفة num=[5, 10, 15, 20, 25] # تحويلها لصيغة ثنائية arr=bytearray(num) # كتابتها في ملف f.write(arr) f.close() ######################### قراءته ############## import pathlib s="" for byte in pathlib.Path("binfile.bin").read_bytes(): # decimal ستقرأ البايت وتحوله ل s+="{0:b}".format(byte) # s نحوله لثنائي مرة أخرى ونضيف ماقرأناه ل print(s) # 101101011111010011001 حيث أن pathlib تسمح لنا بالمرور على الملف بايت بايت. بتاريخ 40 دقائق مضت قال Ali Haidar Ahmad: ######################### إنشاء ملف ثنائي ############ # إنشاء ملف ثنائي # w تشير إلى وضع الكتابة # b تشير إلى ملف ثنائي f=open("binfile.bin","wb") # تعريف مصفوفة num=[5, 10, 15, 20, 25] # تحويلها لصيغة ثنائية arr=bytearray(num) # كتابتها في ملف f.write(arr) f.close() ######################### قراءته ############## import pathlib s="" for byte in pathlib.Path("binfile.bin").read_bytes(): # decimal ستقرأ البايت وتحوله ل s+="{0:b}".format(byte) # s نحوله لثنائي مرة أخرى ونضيف ماقرأناه ل print(s) # 101101011111010011001 حيث أن pathlib تسمح لنا بالمرور على الملف بايت بايت. شكراً أخي الكريم على اجابتك لكن انا اريد اضعة في while وان يقرأ 8 بايت كل مرة اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Ali Haidar Ahmad نشر 21 أغسطس 2021 أرسل تقرير مشاركة نشر 21 أغسطس 2021 بتاريخ 22 دقائق مضت قال Mostafa mahmoud3: شكراً أخي الكريم على اجابتك لكن انا اريد اضعة في while وان يقرأ 8 بايت كل مرة وما الغاية من وضعه ضمن while؟؟؟! اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Ali Haidar Ahmad نشر 22 أغسطس 2021 أرسل تقرير مشاركة نشر 22 أغسطس 2021 بتاريخ 3 ساعات قال Mostafa mahmoud3: شكراً أخي الكريم على اجابتك لكن انا اريد اضعة في while وان يقرأ 8 بايت كل مرة عذراً لم أنتبه أنك تريد قراءة 8 بايتات ظننتها بتات، في هذه الحالة يمكنك القيام بذلك كالتالي: f=open("binfile.bin","wb") # تعريف مصفوفة num=[5,10,15,20,25,3,4,1,6] # تحويلها لصيغة ثنائية arr=bytearray(num) # كتابتها في ملف f.write(arr) f.close() ########################################################### with open("binfile.bin", "rb") as f: bytes = f.read(8) while bytes: s='' for i in list(bytes): s+="{0:b}".format(i) print(s) bytes = f.read(8) f.close() """ 101101011111010011001111001 110 """ اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Mostafa mahmoud3 نشر 22 أغسطس 2021 الكاتب أرسل تقرير مشاركة نشر 22 أغسطس 2021 (معدل) بتاريخ 9 ساعات قال Ali Haidar Ahmad: عذراً لم أنتبه أنك تريد قراءة 8 بايتات ظننتها بتات، في هذه الحالة يمكنك القيام بذلك كالتالي: f=open("binfile.bin","wb") # تعريف مصفوفة num=[5,10,15,20,25,3,4,1,6] # تحويلها لصيغة ثنائية arr=bytearray(num) # كتابتها في ملف f.write(arr) f.close() ########################################################### with open("binfile.bin", "rb") as f: bytes = f.read(8) while bytes: s='' for i in list(bytes): s+="{0:b}".format(i) print(s) bytes = f.read(8) f.close() """ 101101011111010011001111001 110 """ شكرا اخي الكريم وبارك الله فيك الكود يعمل تمام ولكن هناك مشكلة هو انه يقوم بحذف الأصفار من بداية كل byte يعني لو أردنا أن نعيد كتابة هذة البيانات في ملف اخر لن نحصل على نفس الملف انا اريد ان ارجع نفس الخطوات إلي الوراء لاصنع ملف اخر مشابة للملف الاول واسف على الإطالة تم التعديل في 22 أغسطس 2021 بواسطة Mostafa mahmoud3 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
Mostafa mahmoud3
قراءة من ملف وعمل لوب كل مرة تقرأ 8 بايت وإخراج الناتج مثل هذا
11111110101001010101110011101010010101010100110010101010101001
رابط هذا التعليق
شارك على الشبكات الإجتماعية
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.