الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

موضوع شائك في الملفات !

بدأه TheBigBoss في 7 أكتوبر 2010 · 9 رد · 668 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عند الكتابه على الملفات سواء كانت binary or text

فإننا نكتب بالـ byte

يعني لو كتبنا 123

فهذا يعني 3 بbyte يعني 24 bit

00000001

00000010

00000011

ولكن بإمكاننا كتابتها في أقل من ذلك حيث يلزمنا 2 bits لكتابة أي رقم منهم

01

10

11

إذا كيف يمكننا فعل هذا ؟؟؟!!!!!

لا أريد اجابة للغه بعينها

أريد أن أعرف كيف يتم ذلك و لا تهم اللغة

و لو هناك مثال على لغة ما

أفضل ان يكونC , C++ أو Java

شكرا مقدمًا.....

#2

عزيزي, هذا الأمر يسمى encoding. ماهي البيانات التي تريد عمل encoding لها؟ فقط 1, 2 و 3؟

1
#3
اقتباس
عزيزي, هذا الأمر يسمى encoding. ماهي البيانات التي تريد عمل encoding لها؟ فقط 1, 2 و 3؟

+1

فعند الكتابه... تقوم بإختيار ال encoding التي تقوم بالكتابه به (من عدة encodings متاحه غالبا من طرف ال OS )

و كل encoding له طريقته في تخزين الأحرف

#4

البيانات هي كل ماهو في الـ ASCII Tbale

أعمل على برنامج ضغط الملفات

و لكني لن استفيد من هذه الميزه غير في الارقام فقط

لأن الحروف ليس لي يد فيها فهي في جدول الاسكي

#5
اقتباس
البيانات هي كل ماهو في الـ ASCII Tbale

ومن قال لك أن الأرقام في ASCII تمثل بهذا الشكل

اقتباس

يعني لو كتبنا 123

فهذا يعني 3 بbyte يعني 24 bit

00000001

00000010

00000011

1
#6

أنا أعطي مثال فقط بإعتبار ان الأرقام تقع في بداية الـ ASCII

على العموم المطلوب الآن هو الكتابة على الفايل بالـ Bit

يعني مثلا استطيع كتابة رقمين في bayte واحد

لو اردت كتابة 3 و 6

فأكتب على ال File

00110110

و عند القراءة اقسمهم أربعات

0110 ---> 6

0011 ---> 3

أرجوا ان تكون الفكرة قد وصلت

و أرجوا ان أجد الإجابة

#7

أخ TheBigBiss,

الفكرة وصلت من زمان, و لكنك لم تجب عن السؤال التالي:

اقتباس
ماهي البيانات التي تريد عمل encoding لها؟ فقط 1, 2 و 3؟

حدد لي مجموعة البيانات الأولية التي لديك, لأخبرك كيف تقوم بتمثيلها encoding لها. هناك طرق عديدة لتمثيل البيانات. فمثلاً يمكنك القول بأنك ستعامل البيانات و التي تكون متصلة لديك أصلاً على أنها عناصر كل عنصر عبارة عن 4 bits و في تلك الحالة, أقصى عدد من البيانات الأولية و هي الأعداد في حالتك يمكن حمله في أي واحدة من تلك العناصر هو عنصر من 16 عنصر يمثلون مجموعة البيانات الأولية لديك. وصلت الفكرة؟ لو أخذنا كلامك عن العدد 00110110 مثلاً, عندما يكتب المستخدم أي عدد للملف, كيف سيقرأه برنامجك مرة أخرى؟

00110110

ستكون الإجابة واحدة من الاحتمالات التالية:

00110110
=========
0011011 0
001101 10
00110 110
0011 0110
001 10110
00 110110
0 0110110

الآن إما أن تقسم البيانات على حسب حجم ثابت, أو أن توفر معلومات في منطقة مقسمة بحجم ثابت حول منطقة مقسمة بشكل متغير أحياناً يسمى هذا الأمر embedded mate-data. مثلاً هناك خوارزمية ضغط تسمى Huffmanتقوم بعمل variable encoding للبيانات, و حسب علمي القاصر فإن كل خوارزميات الضغط التي تستطيع إعادة البيانات المضغوطة إلى حالتها الأصلية تماماً تعتمد على الإحصاء! لذلك حاول القراءة بتمهل حول الموضوع لأنه موضوع شائك.

تحياتي..

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 8 أكتوبر 2010 في 17:25

2
#8

كما ذكر الزملاء ،

المشكلة أنك تريد استثناء الأرقام بكتابة أكثر من رقم في بايت واحد ، ولكن المشكلة عند القراءة ، كيف ستعرف أنك تقرأ بايت يحتوي على أرقام وليس بايت يقابل حرف من حروف ASCII ؟

أما لو أردت كتابتها وحللت المشكلة السابقة ( لو فرضنا أنك استمعت لاقتراح الأخ خالد و أضفت وصف للبيانات Metadata ) ، فيمكنك التعامل على مستوى البت بقراءة :

=||= مقدمة حول معاملات الـ Bit لجميع المبرمجين =||=

=||= مقدمة حول معاملات الـ Bit لجميع المبرمجين 2 =||=

يعني لا تستطيع بشكل مباشر قراءة/كتابة بت .. إنما تجري العمليات البتّية على البايت ، ثم تقوم بكتابة البايت بشكل طبيعي والعكس عند القراءة .

اقتباس
حاول القراءة بتمهل حول الموضوع لأنه موضوع شائك.

+1

إذاً عنوان الموضوع صحيح :-) ...

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#9

سوف اقرأ المقالات

و نوع البيانات هو أرقام "في الغالب"

الخوارزمية المستخدمة هي LZ-W و قريبا سوف نتعامل مع Huffman

خارج الموضوع :

الا توجد طريقة لتغير اسم الظهور ؟؟

لم الحظ اسمي فهو المفروض TheBigBoss

و لكني كتبته خطأ TheBigBiss

تم تعديل هذه المشاركة بواسطة TheBigBiss في 9 أكتوبر 2010 في 00:24

#10

إذهب لقسم المساعده في إستخدام المنتديات و إطلب ما تريد :D

مواضيع مشابهة